是否可以在PHP中动态定义类属性值?

时间:2015-03-11 13:44:38

标签: php class oop

是否可以定义PHP类属性并使用同一类中的属性动态分配值?类似的东西:

class user {
    public $firstname = "jing";
    public $lastname  = "ping";
    public $balance   = 10;
    public $newCredit = 5;
    public $fullname  = $this->firstname.' '.$this->lastname;
    public $totalBal  = $this->balance+$this->newCredit;

    function login() {
        //some method goes here!
    }
}

收率:

  

解析错误:语法错误,意外' $ this' (T_VARIABLE)第6行

上面的代码有什么问题吗?如果是这样,请指导我,如果不可能,那么实现这个目标的好方法是什么?

2 个答案:

答案 0 :(得分:11)

您可以将它放入构造函数中:

public function __construct() {
    $this->fullname  = $this->firstname.' '.$this->lastname;
    $this->totalBal  = $this->balance+$this->newCredit;
}

为什么你不能按照自己的方式去做?手册中的一句话解释了它:

  

此声明可能包含初始化,但此初始化必须是常量值 - 也就是说,它必须能够在编译时进行评估,并且不能依赖于运行 - 时间信息以便进行评估。

有关OOP属性的更多信息,请参阅手册:http://php.net/manual/en/language.oop5.properties.php

答案 1 :(得分:2)

不,你不能设置那样的属性。

但是:您可以在构造函数中设置它们,因此如果有人创建了该类的实例,它们将可用:

public function __construct()
{
    $this->fullname = $this->firstname . ' ' . $this->lastname;
}