进一步发展课程首先提到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();
答案 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;
}
然后删除构造函数,您的代码应该已经完成了。