PHP类属性、类常量简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asty9000/article/details/82878796

属性

类的变量成员叫做“属性”,或者叫“字段”、“特征”。属性声明是由关键字public、protected或private开头,然后跟一个普通的变量声明来组成。属性中的变量可以初始化,但是初始化的值必须是常数,常数是指PHP脚本在编译阶段时就可以得到其值,而不依赖于运行时的信息才能求值。 为了向后兼容PHP4、PHP5声明属性依然可以直接使用关键字var来替代public、protected和private。在PHP5.0到5.1.3,var会被认为是废弃的,并产生E_STRICT警告,但是5.1.3 之后就不再认为是废弃,也不会产生警告。使用var会默认为public。

在类的成员方法中,可以通过伪变量($this)和对象运算符(->)来访问非静态变量,静态属性可以通过范围解析操作符(::)来访问,self::property或$this::property。

PHP5.3起,如果heredoc中不包含变量或其他复杂格式,则可以用来初始化静态变量和类中的属性、常量。PHP5.3引入的nowdoc也可以用于初始化静态变量和类中的属性、常量。

<?php
$name="php";
class A{
    static $v="xxx";
    static public $v2 = <<<EOD
hello world
EOD;
    static public $v3 = <<<'EOA'
$name
EOA;
    var $var = 'a default value';
    public function displayVar() {
        echo $this->var.self::$v.$this::$v3;
    }
}
$a=new A();
$a->displayVar();
?>

常量

将在类中始终保持不变的值称为类常量,在定义常量时不需要使用$,而是在常量名前使用const关键字。常量的值必须是一个定值,不能是变量,类属性,数学运算的结果或函数调用。接口中也可以定义常量。PHP5.3起可以通过变量来动态调用类。变量的值不能为关键字,如self、parent、static等。

范围解析操作符(::)来访问,self::property或$this::property。

<?php
$name="php";
class A{
    const cons=<<<EOD
hello constant
EOD;
    var $var = 'a default value';
    public function displayVar() {
        echo self::cons."\n".$this::cons."\n";
    }
}
$a=new A();
$a->displayVar();
echo A::cons."\n";
$className="A";
echo $className::cons."\n";
?>

 

猜你喜欢

转载自blog.csdn.net/asty9000/article/details/82878796