第六节 访问属性和方法 [6]


Posted in PHP onOctober 09, 2006

一个对象实例的属性是变量,就像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 file://动物
{
public $blood; file://热血or冷血属性
public $name;
public function __construct($blood, $name=NULL)
{
$this->blood = $blood;
if($name)
{
$this->name = $name;
}
}
}

class Mammal extends Animal file://哺乳动物
{
public $furColor; file://皮毛颜色
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之Smarty入门
Jan 04 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
PHP文件读取功能的应用实例
May 08 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
php实现中文转数字
Feb 18 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
php利用gd库为图片添加水印
Nov 09 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
PHP读取文件或采集时解决中文乱码
Mar 09 PHP
第八节 访问方式 [8]
Oct 09 #PHP
第九节 绑定 [9]
Oct 09 #PHP
第十节 抽象方法和抽象类 [10]
Oct 09 #PHP
Extended CHM PHP 语法手册之 DIY
Oct 09 #PHP
使用PHP制作新闻系统的思路
Oct 09 #PHP
一个oracle+PHP的查询的例子
Oct 09 #PHP
为php4加入动态flash文件的生成的支持
Oct 09 #PHP
You might like
探讨方法的重写(覆载)详解
2013/06/08 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
JavaScript 学习笔记(十二) dom
2010/01/21 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
javascript计时器事件使用详解
2014/01/07 Javascript
Jquery对新插入的节点 绑定Click事件失效的解决方法
2016/06/02 Javascript
Javascript基础_标记文字的实现方法
2016/06/14 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
vue组件开发之tab切换组件使用详解
2020/08/21 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python-基础-入门 简介
2014/08/09 Python
python文件与目录操作实例详解
2016/02/22 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
python实现Decorator模式实例代码
2018/02/09 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
python函数的万能参数传参详解
2019/07/26 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
浅析PEP572: 海象运算符
2019/10/15 Python
Python 必须了解的5种高级特征
2020/09/10 Python
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
Lovedrobe官网:英国领先的大码服装品牌
2019/09/19 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
大学生饮食配送创业计划书
2014/01/04 职场文书
省三好学生申请材料
2014/01/22 职场文书
财务会计自荐信范文
2014/02/21 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书