第六节 访问属性和方法 [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.MVC的模板标签系统(一)
Sep 05 PHP
php 代码优化的42条建议 推荐
Sep 25 PHP
PHP array操作10个小技巧分享
Jun 23 PHP
yii框架中的Url生产问题小结
Jan 16 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP对象实例化单例方法
Jan 19 PHP
php简单随机字符串生成方法示例
Apr 19 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP中__set()实例用法和基础讲解
Jul 23 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
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
thinkphp模板赋值与替换实例简述
2014/11/24 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
php如何把表单内容提交到数据库
2019/07/08 PHP
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
浅谈JS运算符&amp;&amp;和|| 及其优先级
2016/08/10 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
js实现简单的手风琴效果
2017/02/27 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
2018/07/26 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
Vue+Element实现动态生成新表单并添加验证功能
2019/05/23 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Python交互环境下实现输入代码
2018/06/22 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
2020/02/26 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
毕业生就业协议书
2014/04/11 职场文书
党员批评与自我批评
2014/10/15 职场文书
药店收银员岗位职责
2015/04/07 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书