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


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 相关文章推荐
PHP一些有意思的小区别
Dec 06 PHP
php读取xml实例代码
Jan 28 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
PHP错误和异长常处理总结
Mar 06 PHP
Laravel框架学习笔记(一)环境搭建
Oct 15 PHP
php图片处理函数获取类型及扩展名实例
Nov 19 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
Nov 30 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
php 策略模式原理与应用深入理解
Sep 25 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垃圾回收机制简单说明
2010/07/22 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
PHP实现向关联数组指定的Key之前插入元素的方法
2017/06/06 PHP
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
jQuery仿移动端支付宝键盘的实现代码
2018/08/15 jQuery
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
2020/08/07 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
保时捷设计:Porsche Design
2019/03/30 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
竞聘书模板
2014/03/31 职场文书
和解协议书
2014/04/16 职场文书
2014年导购员工作总结
2014/11/18 职场文书
劳保用品管理制度范本
2015/08/06 职场文书