第六节 访问属性和方法 [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 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
新浪微博API开发简介之用户授权(PHP基础篇)
Sep 25 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP获取MAC地址的具体实例
Dec 13 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
一组PHP加密解密函数分享
Jun 05 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
Jul 01 PHP
php创建session的方法实例详解
Jan 27 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 PHP
php post换行的方法
Feb 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
CodeIgniter启用缓存和清除缓存的方法
2014/06/12 PHP
php实现socket推送技术的示例
2017/12/20 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
2016/04/04 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python3爬虫怎样构建请求header
2018/12/23 Python
python实现杨氏矩阵查找
2019/03/02 Python
python3下载抖音视频的完整代码
2019/06/05 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
一年级数学教学反思
2014/02/01 职场文书
欢迎横幅标语
2014/06/17 职场文书
护士工作失误检讨书
2014/09/14 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
2015年资料员工作总结
2015/04/25 职场文书
草房子读书笔记
2015/06/29 职场文书
护理心得体会范文
2016/01/22 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
Pycharm连接远程服务器并远程调试的全过程
2021/06/24 Python
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android