2017-10-08 7 views
1

さらにクラスを開発するには、先にhereを参照してください。PHPクラスの入力プロパティのリセット

私の目的は、$ 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(); 

答えて

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; 
} 

を次にコンストラクタを削除して、あなたはすでにそれを持っているとして、あなたのコードが動作するはずです。

関連する問題