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


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 相关文章推荐
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
PHP时间戳 strtotime()使用方法和技巧
Oct 29 PHP
php生成excel列序号代码实例
Dec 24 PHP
跟我学Laravel之路由
Oct 15 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php实现比较全的数据库操作类
Jun 18 PHP
PHP检测用户是否关闭浏览器的方法
Feb 14 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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
php Sql Server连接失败问题及解决办法
2009/08/07 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
JavaScript中的事件处理
2008/01/16 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
Javascript数组方法reduce的妙用之处分享
2019/06/10 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
Django进阶之CSRF的解决
2018/08/01 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
python处理excel绘制雷达图
2019/10/18 Python
Python实现动态循环输出文字功能
2020/05/07 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
大学生活动总结怎么写
2014/04/29 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
城管年度个人总结
2015/02/28 职场文书
党员个人自我评价
2015/03/03 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
大学运动会加油稿
2015/07/22 职场文书