初心者として、クラス属性を別のクラスのインスタンス オブジェクトとして初期化できますか?
初期化できる場合、その構文は何ですか?
-----解決策---------
class A {}<br />class B {<br /> public $o;<br /> function __construct() {<br /> $this->o = new A;<br /> }<br />}<br />$p = new B;<br />print_r($p);
ログイン後にコピー
B Object<br />(<br /> [o] => A Object<br /> (<br /> )<br /><br />)<br /><br />
ログイン後にコピー
------解決策----------------------プログラムの書き方が間違っています。
1. 9 行目、$parameter 属性を表示します。これは echo $parameter;
の代わりに echo $this->parameter; となります。2. 15 行目 $test = new test("test") ) ; この割り当ては private static $test には割り当てられないため、20 行目の self::$test は null
に等しいため、15 行目を self::$test = new test("test) に変更する必要があります");
変更されたプログラムは次のとおりです:
<br /><?php<br /> class test{<br /> private $parameter;<br /> public function __construct($parameter){<br /> $this->parameter=$parameter;<br /> echo "test类构造方法被调用<br/>";<br /> }<br /> public function getParameter(){<br /> echo $this->parameter; // 修改这里<br /> }<br /> }<br /> class test1{<br /> private static $test=null;<br /> public function __construct(){<br /> self::$test = new test("test"); // 修改这里<br /> echo "test1类构造方法被调用<br/>";<br /> }<br /> public static function show(){<br /> echo "show()方法被调用";<br /> self::$test->getParameter();//<br /> }<br /> }<br /> $test1 = new test1();<br /> test1::show();<br />?><br />
ログイン後にコピー
テスト クラス コンストラクターが呼び出されます
test1 クラス コンストラクターが呼び出されます
show()メソッドは test と呼ばれます
最後に、自分自身の質問がある場合はスレッドを開くべきであり、他の人のスレッドで質問すべきではないと言わなければなりません。