第六节 访问属性和方法 [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 feof用来识别文件末尾字符的方法
Aug 01 PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 PHP
php递归方法实现无限分类实例代码
Feb 28 PHP
php实现建立多层级目录的方法
Jul 19 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
php header函数的常用http头设置
Jun 25 PHP
Thinkphp和onethink实现微信支付插件
Apr 13 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP的介绍以及优势详细分析
Sep 05 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP7 windows支持
2021/03/09 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
jquery获取节点名称
2015/04/26 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
js实现tab栏切换效果
2020/08/02 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
python网络编程学习笔记(四):域名系统
2014/06/09 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
开业庆典主持词
2014/03/21 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
春节慰问信范文
2015/02/15 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
工作简报范文
2015/07/21 职场文书
三八节祝酒词
2015/08/11 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript
Python合并多张图片成PDF
2021/06/09 Python