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


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使之能同时支持GIF和JPEG
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
Apr 08 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP代码优化技巧小结
Sep 29 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
php图片上传类 附调用方法
May 15 PHP
php7 安装yar 生成docker镜像
May 09 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 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,ajax实现分页
2008/03/27 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
PHP的简易冒泡法代码分享
2012/08/28 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
jQuery中after的两种用法实例
2013/07/03 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
js加减乘除丢失精度问题解决方法
2014/05/16 Javascript
window.location的重写及判断location是否被重写
2014/09/04 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
JavaScript把数组作为堆栈使用的方法
2015/03/20 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
hammer.js实现图片手势放大效果
2017/08/29 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
Python中的with...as用法介绍
2015/05/28 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
python监控nginx端口和进程状态
2019/09/06 Python
新西兰最大的品牌运动鞋购物网站:Platypus NZ
2017/10/27 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
幼儿园中秋节活动反思
2014/02/16 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
校运会通讯稿
2015/07/18 职场文书
活动宣传稿范文
2015/07/23 职场文书
初中班干部工作总结
2015/08/10 职场文书
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android