2016-03-25 12 views
2

私は、コンストラクタのパラメータは、それが属するクラスのことを除いて任意のタイプのものとすることができるどこかオブジェクト呼び出しでオブジェクトを引数として渡すことはできますか?

読みください。

ので

$obj = new class_name(new class_name()); 

これはPHPで許可されていますか?

+4

1)テストしましたか? 2)あなたはそれについて考えましたか? – Rizier123

+0

@ Rizier123 yes https://3v4l.org/BkVh8 – Exception

+0

「内部」の「新しいA」にパラメータがないため、警告が表示されます。 https://3v4l.org/lOWhnまたはhttps://3v4l.org/Z8flQ – VolkerK

答えて

4

よく分かりませんが、私たちはコードを実行し、何が起こったのかを段階的に調べてみましょう。

だから、クラスがコンストラクタの引数を取る場合、これはこのようなものを見なければならないでしょう意味:

class A { 
    public function __construct($parameter){ 

    } 
} 

今、私たちはそれのインスタンスを作成します。

$o = new A(new A); 

しかし、引数にはインスタンスも必要です。

$o = new A(new A(new A));  

しかし、引数にはインスタンスも必要です。

$o = new A(new A(new A(new A))); 

しかし、引数は、インスタンス必要があります。

$o = new A(new A(new A(new A(new A)))); 

をしかし引数は、インスタンスを必要とします:

$o = new A(new A(new A(new A(new A(new A))))); 

しかし、引数は、インスタンスを必要とします:

$o = new A(new A(new A(new A(new A(new A(new A)))))); 

...私は迷っています。


そして救助者は"default argument values"となります! VolkerKは既にコメントでは不可能ではないことを指摘しているので、何とかどこかでチェーンを終了させるだけで十分です。そして、それは何らかの形でデフォルト値を持っています。

class A { 
    public function __construct($parameter = NULL){ 

    } 
} 

ので、デフォルト値でチェーンを使用すると、コンストラクタに別のインスタンスを渡さないと、それはここNULLになり、デフォルト値を、取るとき、その後、終了します。

+1

レスキューへのデフォルトパラメータ値 – VolkerK

+1

これは無限になります – Exception

+0

@Exceptionあなたは["Aha effect"](https: //en.wikipedia.org/wiki/Eureka_effect)。 – Rizier123

関連する問題