0

PHP コンストラクターについて読んでいるときに、このページで以下の例に出くわしました。

<?php
    class MyClass {
        // use a unique id for each derived constructor,
        // and use a null reference to an array, 
        // for optional parameters
        function __construct($id="", $args=null) {
            // parent constructor called first ALWAYS
            /*Remaining code here*/
        }
    }

がとに$id設定されている理由がわかりません。いつこのようなものを使用しますか?を使用できないのはなぜですか。""$argsnullfunction __construct($id, $args) {

4

3 に答える 3

4

これらはデフォルトの引数です。呼び出し元から提供されない場合は、それらの値に設定されます。それ以外の場合は、呼び出し元の値に設定されます。

于 2013-02-09T21:38:51.117 に答える
3

したがって、 と の両方$x = MyClass("12", array(1, 2, 3))$y = MyClass()有効です。

これらのデフォルト引数がないMyClass()と、エラーが発生します。

于 2013-02-09T21:38:47.770 に答える
3

これらはデフォルトの引数値です。

これは、パラメーターを渡さずにコンストラクターを呼び出すことができ、コンストラクターがそれらの値を引数に追加することを意味します。

したがって、次のようなインスタンスを作成できます。

$mc = MyClass();

では、これが役立つのはいつでしょうか。Door通常は同じパラメーターを持つクラスがあるとします。通常はタイプのクラスがあるとしましょうnormal。次に、その値を渡すことを省略できますがDoor、タイプセーフな a が必要な場合は、それを渡したい場合があります。明確にするために:

class Door {
  private $door_type;
  public function __construct($type='normal') {
    $this->door_type = $type;
  }
}

//Create a 'normal' door
$normal_door = new Door();
$normal_door = new Door('normal'); //the same as above

//Create a 'safe' door
$safe_door = new Door('safe');

この例は、明らかに実際に実装する方法ではありませんが、使用方法を理解していただければ幸いです。

注として、すべての言語がこれをサポートしているわけではありません。たとえば、Java はサポートしていません。

于 2013-02-09T21:44:23.493 に答える