重置PHP类中的输入属性

时间:2017-10-08 21:40:22

标签: php class properties

进一步发展课程首先提到here

我的目标是创建一个可以重置$ inputNumber和$ inputArray的类,但下面的方法似乎不起作用。

class myClass
{
public $inputNumber = 27;
public $inputArray = array(1, 2, 4);
public $outputArray = array();

public function setInput($newNumber)
{
    $this->inputNumber = $newNumber;
}

public function setArray($newArray)
{
    $this->inputArray = $newArray;
}

function __construct() {
   $this->outputArray= array($this->inputArray[0]*$this->inputNumber, 
                             $this->inputArray[1]*$this->inputNumber, 
                             $this->inputArray[2]*$this->inputNumber
                             );
}

public function printOutput()
{
    $output = "1st value is " . $this->outputArray[0] . "<br>";
    $output .= "2nd value is " . $this->outputArray[1] . "<br>";
    $output .= "3rd value is " . $this->outputArray[2] . "<br>";
    return $output;
}

}

$obj = new myClass;
$obj = setInput(54);
$obj = setArray(array(6, 12, 24);
echo $obj->printOutput();

1 个答案:

答案 0 :(得分:2)

问题是outputArray是在类的构造中计算的,这是在你设置输入和数组之前发生的。

您应该将计算逻辑移动到自己的方法,例如:

public function calculateOutput()
{
    $this->outputArray= array(
        $this->inputArray[0] * $this->inputNumber, 
        $this->inputArray[1] * $this->inputNumber, 
        $this->inputArray[2] * $this->inputNumber
    );
}

public function printOutput()
{
    // Calculate your result now
    $this->calculateOutput();

    $output = "1st value is " . $this->outputArray[0] . "<br>";
    $output .= "2nd value is " . $this->outputArray[1] . "<br>";
    $output .= "3rd value is " . $this->outputArray[2] . "<br>";
    return $output;
}

然后删除构造函数,您的代码应该已经完成​​了。