第六节 访问属性和方法 [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速度全攻略
Oct 09 PHP
php中的数组操作函数整理
Aug 18 PHP
php xml-rpc远程调用
Dec 19 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
php去除字符串换行符示例分享
Feb 13 PHP
php实现mysql封装类示例
May 07 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
thinkphp实现分页显示功能
Dec 03 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
Oct 27 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
PHP VS ASP
2006/10/09 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
微信access_token的获取开发示例
2015/04/16 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
php实例化一个类的具体方法
2019/09/19 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
python对url格式解析的方法
2015/05/13 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
销售演讲稿范文
2014/01/08 职场文书
检察官就职演讲稿
2014/01/13 职场文书
学生宿舍管理制度
2014/01/30 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
物业保安辞职信
2015/05/12 职场文书
常住证明范本
2015/06/23 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android
Python中的变量与常量
2021/11/11 Python
springboot入门 之profile设置方式
2022/04/04 Java/Android