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


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 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
怎样在php中使用PDF文档功能
Oct 09 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP 无限分类三种方式 非函数的递归调用!
Aug 26 PHP
PHP静态调用非静态方法的应用分析
May 02 PHP
php rsa加密解密使用详解
Jan 14 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
Mar 07 PHP
php禁用函数设置及查看方法详解
Jul 25 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 PHP
PHP数组与字符串互相转换实例
May 05 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
DC动漫人物排行
2020/03/03 欧美动漫
PHP+Ajax+JS实现多图上传
2016/05/07 PHP
js表格分页实现代码
2009/09/18 Javascript
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
JavaScript设置IFrame高度自适应(兼容各主流浏览器)
2013/06/05 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
nodejs的10个性能优化技巧
2014/07/15 NodeJs
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
35个Python编程小技巧
2014/04/01 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
Python跳出多重循环的方法示例
2019/07/03 Python
numpy.random.shuffle打乱顺序函数的实现
2019/09/10 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
美德好少年事迹材料
2014/01/19 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
个人事迹材料范文
2014/12/29 职场文书
团代会开幕词
2015/01/28 职场文书
小学校本教研总结
2015/08/13 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书