类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。 属性声明是由关键字public或者protected或者 private开头,然后跟一个变量来组成。 属性中的变量可以初始化,但是初始化的值必须是常数,这里的常数是指php脚本在编译阶段时就为常数,而不是在编译阶段之后在运行阶段运算出的常数。
有关public, protected, 和 private的更多详细信息,请查看访问控制。
Note:
为了兼容php4,php5声明属性依然可以直接使用关键字var,或者放在public, protected, or private之前。但是var并不是必须的。在php 5.0 到5.1.3,var会认为是废弃的, 而且抛出E_STRICT警告,但是5.1.3之后就不再认为是废弃,也不会抛出警告。
如果直接使用var声明属性,而没有public, protected, 或 private,php 5 会认为这个属性为public。
在类的成员方法里面,可以通过$this->property(property是属性名字)这种方式来访问类的属性、 方法,但是要访问类的静态属性或者在静态方法里面却不能使用,而是使用self::$property。 更多Static关键字,请查看Static 关键字。
在类的非静态方法里面可以使用伪变量$this,这个伪变量是调用该方法的实例化对象引用(一般来说该对象是这个方法所在类的实例化对象, 但是也有可能是另外的类的对象,比如在另一个类里面使用静态化来调用这个类的方法 )。
Example #1 属性声明
<?php
class SimpleClass
{
// 错误的属性声明
public $var1 = 'hello ' . 'world';
public $var2 = <<<EOD
hello world
EOD;
public $var3 = 1+2;
public $var4 = self::myStaticMethod();
public $var5 = $myVar;
// 正确的属性声明
public $var6 = myConstant;
public $var7 = array(true, false);
//在php 5.3.0 及之后,下面的声明也正确
public $var8 = <<<'EOD'
hello world
EOD;
}
?>
Note:
更多关于类/对象的处理函数,请查看类/对象 函数。
跟heredocs不同, nowdocs能够使用在静态变量,也能使用在静态声明。
Example #2 示例:使用nowdoc初始化属性
<?php
class foo {
// As of PHP 5.3.0
public $bar = <<<'EOT'
bar
EOT;
}
?>
Note:
在php 5.3.0 增加了Nowdoc的支持。