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


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中实现图片的锐化
Oct 09 PHP
一次编写,随处运行
Oct 09 PHP
新版mysql+apache+php Linux安装指南
Oct 09 PHP
PHP中GET变量的使用
Oct 09 PHP
网站当前的在线人数
Oct 09 PHP
PHP+MySQL5.0中文乱码解决方法
Nov 20 PHP
php 全文搜索和替换的实现代码
Jul 29 PHP
PHP 循环列出目录内容的函数代码
May 26 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php array_merge函数使用需要注意的一个问题
Mar 30 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
Smarty模板语法详解
Jul 20 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
PHP 彩色文字实现代码
2009/06/29 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
2016/08/10 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
python设置检查点简单实现代码
2014/07/01 Python
Python 隐藏输入密码时屏幕回显的实例
2019/02/19 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
Python进度条的制作代码实例
2019/08/31 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
详解使用postMessage解决iframe跨域通信问题
2019/11/01 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
银行个人求职自荐信范文
2013/12/16 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
四风对照检查材料思想汇报
2014/09/20 职场文书
解除劳动合同协议书范本2014
2014/09/25 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL