ホームページ > バックエンド開発 > PHPチュートリアル > コンストラクターの問題? ? ?

コンストラクターの問題? ? ?

WBOY
リリース: 2016-06-23 14:14:33
オリジナル
896 人が閲覧しました

一般的な状況は次のとおりです。クラス A のオブジェクト インスタンスがクラス B のメソッドで多数使用されるため、クラス B のコンストラクターで直接クラス A をインスタンス化します

class A{public $mes="ok";}class B{public function __construct(){//下面很多方法都要用到A的对象,于是我在B类构造方法里面直接对象一个,方便下面调用$a=new A();} //下面B的成员方法开始调用A对象的方法public function test(){$mes=$a->mes;  //代码运行到这里提示$a不知道是个什么东西,即没有实例化,但上我在构造函数中不是做了吗?好像没有起作用echo $mes;}$b=new B();$b->test();}
ログイン後にコピー



クラス B のコンストラクターでインスタンス化する A オブジェクト。 B 、B のメンバー メソッドが使用できません。何が起こっていますか?後で a オブジェクトを使用するメンバー メソッドを多数作成することになりますが、それらを 1 つずつインスタンス化することは不可能です。


ディスカッションへの返信 (解決策)

変数スコープの問題
$this->a = new A();
$mes = $this->a->mes;

上記の実行結果 ヒント:

注意: 未定義の変数: C:phpapachehtdocstest.php の 18 行目で a

注意: C:phpapachehtdocstest.php の 18 行目でオブジェクト以外のプロパティを取得しようとしています

変数スコープの問題
$this -> a = 新しい A();
$mes = $this->a->mes;

ブル!ひと言で秘密が判明!ありがたい!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート