PHP OOP在同一类中构造类属性表单方法


PHP OOP constructing class property form method in same class

由于某些原因,我无法使其工作:

<?php 
class Number{
    public $number;
    public $number_added;

    public function __construct(){
        $this->number_added = $this->add_two();
    }
    public function add_two(){
        return $this->number + 2;
    }
}   
?>

$this->number是从数据库中设置的,$this->number_two应该是DB值+2。但是,当我回显$this->number_added时,它会返回两个。$number值已正确初始化。这是我问题的一个简化例子,只是想看看我试图做的事情是否可行?PHP OOP初学者。

add_two()中使用$number属性之前,您没有在任何位置设置该属性(通过构造函数),因此PHP在添加过程中将其评估为0

您应该在对象构造期间以初始状态通过,例如

public function __construct($number) {
    $this->number = $number;
    $this->number_added = $this->add_two();
}

更新

请允许我举例说明这个问题。这是你当前的代码,我想你是如何使用它的

$number = 2;
$obj = new Number();
// right here, $obj->number is null (0 in a numeric sense)
// as your constructor calls add_two(), $obj->number_added is 2 (0 + 2)
$obj->number = $number;
// now $obj->number is 2 whilst $obj->number_added remains 2

使用我更新的构造函数,以下是的情况

$number = 2;
$obj = new Number($number);
// $obj->number is set to $number (2) and a call to add_two() is made
// therefore $obj->number_added is 4