第六节 访问属性和方法 [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 保留小数点
Apr 21 PHP
php实现用户在线时间统计详解
Oct 08 PHP
php四种基础算法代码实例
Oct 29 PHP
小谈php正则提取图片地址
Mar 27 PHP
dedecms集成财付通支付接口
Dec 28 PHP
php银联网页支付实现方法
Mar 04 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
May 04 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
php实现压缩合并js的方法【附demo源码下载】
Sep 22 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
thinkPHP框架整合tcpdf插件操作示例
Aug 07 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
Protoss兵种介绍
2020/03/14 星际争霸
第1次亲密接触PHP5(1)
2006/10/09 PHP
PHP4引用文件语句的对比
2006/10/09 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
浅谈PHPANALYSIS提取关键字
2019/03/08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
2013/09/05 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
react基本安装与测试示例
2020/04/27 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
Python之读取TXT文件的方法小结
2018/04/27 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
Python使用APScheduler实现定时任务过程解析
2019/09/11 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
绩效工资实施方案
2014/03/15 职场文书
滞留工资返还协议书
2014/10/19 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
学校党员干部承诺书
2015/05/04 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
pytorch 如何使用batch训练lstm网络
2021/05/28 Python
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL