首页 » PHP教程 » 属性

PHP 属性

属性

类的变量成员叫做“属性”,或者叫“字段”、“特征”,在本文档统一称为“属性”。 属性声明是由关键字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(truefalse);

   
//在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的支持。