第六节--访问属性和方法


Posted in PHP onNovember 16, 2006

*
+-------------------------------------------------------------------------------+
| = 本文为Haohappy读<<Core PHP Programming>> 
| = 中Classes and Objects一章的笔记 
| = 翻译为主+个人心得 
| = 为避免可能发生的不必要的麻烦请勿转载,谢谢 
| = 欢迎批评指正,希望和所有PHP爱好者共同进步! 
| = PHP5研究中心: http://blog.csdn.net/haohappy2004
+-------------------------------------------------------------------------------+
*/

第六节--访问属性和方法

一个对象实例的属性是变量,就像PHP的其他变量一样. 但是你必须使用->运算符来引用它们. 不需要在属性前使用美元符$. 例如, 6.1中打印User对象的name属性那一行. 

可以联用->,如果一个对象的属性包含了一个对象,你可以使用两个->运算符来得到内部对象的属性. 你甚至可以用双重引用的字符串来放置这些表达式. 看6.5中的例子,对象House中的属性room包含了一组Room对象.

访问方法和访问属性类似. ->运算符用来指向实例的方法. 在例子6.1中调用getLastLogin就是. 方法执行起来和类外的函数几乎相同.

如果一个类从另一类中继承而来,父类中的属性和方法将在子类中都有效,即使在子类中没有声明. 像以前提到过的,继承是非常强大的. 如果你想访问一个继承的属性,你只需要像访问基类自己的属性那样引用即可,使用::运算符.

<?php   
   class Room   
   {   
       public $name;          function __construct($name="unnamed")   
       {   
           $this->name = $name;   
       }   
   }   
   class House   
   {   
       //array of rooms   
       public $room;   
   }   
   //create empty house   
   $home = new house;   
   //add some rooms   
   $home->room[] = new Room("bedroom");   
   $home->room[] = new Room("kitchen");   
   $home->room[] = new Room("bathroom");   
   //show the first room of the house   
   print($home->room[0]->name);   
?>  

PHP有两个特殊的命名空间:parent命名空间指向父类,self命名空间指向当前的类. 例子6.6中显示了如何用parent命名空间来调用父类中的构造函数. 同时也用self来在构造函数中调用另一个类方法.

<?php   
   class Animal //动物   
   {   
       public $blood; //热血or冷血属性   
       public $name;   
       public function __construct($blood, $name=NULL)   
       {   
           $this->blood = $blood;   
           if($name)   
           {   
               $this->name = $name;   
           }   
       }   
   }      class Mammal extends Animal  //哺乳动物   
   {   
       public $furColor; //皮毛颜色   
       public $legs;   
       function __construct($furColor, $legs, $name=NULL)   
       {   
           parent::__construct("warm", $name);   
           $this->furColor = $furColor;   
           $this->legs = $legs;   
       }   
   }   
   class Dog extends Mammal     
   {   
       function __construct($furColor, $name)   
       {   
           parent::__construct($furColor, 4, $name);   
           self::bark();   
       }   
       function bark()   
       {   
           print("$this->name says 'woof!'");   
       }   
   }   
   $d = new Dog("Black and Tan", "Angus");   
?>  

第四章中介绍了如何调用函数. 对于对象的成员来是这样调用的:如果你需要在运行时确定变量的名称,你可以用$this->$Property这样的表达式. 如果你想调用方法,可以用$obj->$method().

你也可以用->运算符来返回一个函数的值,这在PHP以前的版本中是不允许的. 例如,你可以写一个像这样的表达式: $obj->getObject()->callMethod(). 这样避免了使用一个中间变量,也有助于实现某些设计模式,如Factory模式. 

PHP 相关文章推荐
8个出色的WordPress SEO插件收集
Feb 26 PHP
PHP缓存技术的使用说明
Aug 06 PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 PHP
php实现上传图片生成缩略图示例
Apr 13 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 PHP
WordPress中自定义后台管理界面配色方案的小技巧
Dec 29 PHP
PHP的Yii框架入门使用教程
Feb 15 PHP
Yii2增删改查之查询 where参数详细介绍
Aug 08 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
php实现微信公众号企业转账功能
Oct 01 PHP
PHP设计模式(一)工厂模式Factory实例详解【创建型】
May 02 PHP
第五节--克隆
Nov 16 #PHP
第四节--构造函数和析构函数
Nov 16 #PHP
第三节--定义一个类
Nov 16 #PHP
第二节--PHP5 的对象模型
Nov 16 #PHP
第一节--面向对象编程
Nov 16 #PHP
MYSQL数据库初学者使用指南
Nov 16 #PHP
php.ini 中文版
Oct 28 #PHP
You might like
杏林同学录(三)
2006/10/09 PHP
php ftp文件上传函数(基础版)
2010/06/03 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
javascript options属性集合操作代码
2009/12/28 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python中的getopt函数使用详解
2015/07/28 Python
qpython3 读取安卓lastpass Cookies
2016/06/19 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
python对象与json相互转换的方法
2019/05/07 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Orvis官网:自1856年以来,优质服装、飞钓装备等
2018/12/17 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
农村婚礼主持词
2014/03/13 职场文书
村党支部换届选举方案
2014/05/02 职场文书
无毒社区工作方案
2014/05/23 职场文书
党员查摆剖析材料
2014/10/10 职场文书
股份转让协议书范本
2015/01/27 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
交通事故被告答辩状
2015/05/22 职场文书
2015教师个人德育工作总结
2015/07/22 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
《去年的树》教学反思
2016/02/18 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL
MySQL自定义函数及触发器
2022/08/05 MySQL