2

私は PHP を初めて使用するので、コンストラクトがどのように機能するかをまだ把握していません。助けていただければ幸いです。

次のコードは、変数 $arrivalTime と $hourStay のエコーに失敗しています:

class Variable {

public $arrivalTime;
public $hourStay;   

public function __construct() {
    $this->arrivalTime = $_POST['arrivalTime'];
    $this->hourStay = $_POST['hourStay'];

    echo $this->arrivalTime;
    echo $this->hourStay;
}
}
4

1 に答える 1

2

new Variable()コードのどこかで呼び出して、クラスをインスタンス化する必要があります。ただし、一般的には、クラスをポスト変数に依存させずに、コンストラクターを介して渡す方が適切です。

class Variable {

  public $arrivalTime;
  public $hourStay;   

  public function __construct($arrivalTime, $hourStay) {
      // TODO: Check if the values are valid, e.g.
      // $arrivalTime is a time in the future 
      // and $hourStay is an integer value > 0.
      $this->arrivalTime = $arrivalTime;
      $this->hourStay = $hourStay;
  }

  public function print() {
      echo $this->arrivalTime;
      echo $this->hourStay;
  }
}

$var = new Variable($_POST['arrivalTime'], $_POST['hourStay']);
$var->print();

また、出力の生成をコンストラクタから切り離した方法にも注目してください。その唯一のタスクは、オブジェクトを有効な状態に初期化することです。入力の処理または出力の生成は、その責任ではありません。

于 2015-10-29T15:31:08.650 に答える