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


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 相关文章推荐
手把手教你使用DedeCms V3的在线采集图文教程
Apr 03 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP获取youku视频真实flv文件地址的方法
Dec 23 PHP
php实现json编码的方法
Jul 30 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
PHP实现的XML操作类【XML Library】
Dec 29 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
May 23 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
php递归函数怎么用才有效
2018/02/24 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
cnblogs 代码高亮显示后的代码复制问题解决实现代码
2011/12/14 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
2014/01/14 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
基于LayUI实现前端分页功能的方法
2017/07/22 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
微信小程序学习笔记之目录结构、基本配置图文详解
2019/03/28 Javascript
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
使用Python对MySQL数据操作
2017/04/06 Python
详解python中的装饰器
2018/07/10 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
详解Python:面向对象编程
2019/04/10 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
python中os.remove()用法及注意事项
2021/01/31 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
信息部岗位职责
2013/11/12 职场文书
植树节活动总结
2014/04/30 职场文书
关于安全的标语
2014/06/10 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
银行授权委托书格式
2014/10/10 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL