ホームページ  >  記事  >  バックエンド開発  >  初心者に聞きたいのですが、クラス属性を別のクラスのインスタンスオブジェクトとして初期化することはできますか?

初心者に聞きたいのですが、クラス属性を別のクラスのインスタンスオブジェクトとして初期化することはできますか?

WBOY
WBOYオリジナル
2016-06-13 12:02:131105ブラウズ

初心者として、クラス属性を別のクラスのインスタンス オブジェクトとして初期化できますか?
初期化できる場合、その構文は何ですか?

-----解決策---------

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 />

------解決策----------------------

引用:
@xuzuning Moderator
<?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 $parameter;<br />		}<br />	}<br />	class test1{<br />		private static $test=null;<br />		public function __construct(){<br />			$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 />?>

上記のコード文: self::$test->getParameter(); は致命的なエラーを報告します: メンバー関数 getParameter の呼び出し() 非オブジェクト で、test1 クラスの属性 $test を通常の属性に変更し、show() メソッドを通常のメソッドに変更しましたが、同じエラーが依然として報告されます。なぜですか?


プログラムの書き方が間違っています。
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 と呼ばれます

最後に、自分自身の質問がある場合はスレッドを開くべきであり、他の人のスレッドで質問すべきではないと言わなければなりません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。