要点:別のクラスのメソッドでインスタンス化されたクラスのメソッドにアクセスするにはどうすればよいですか?別のクラス内のメソッドによってインスタンス化されたクラスへのアクセス
私は今、それは(コードを変更することはところで、オプションではありませんそれは私のものではありません...私はちょうどそれを解読しています。)以下のんで探していたコードのビットがあります:
は、クラスには、別のクラスをインスタンス化するメソッドがあります。
// this file is named fooClassHere.php class Foo{ public $meh; function bar(){ $something = new Baz; $this->meh = $something->getStuff(); } }
私が理解しようとしているのは、このインスタンス化されたクラスBazのメソッドにアクセスする方法です。別のページには、以下のようなものが含まれます。
include 'bazClassHere.php'; include 'fooClassHere.php'; $a = new Foo; $a->bar();
だから、バズのすべてが何らかの形で利用可能になりましてはならない(私はます$ this-に割り当てられていないだけでgetStuff()>をMEH)? FooとBazクラスが含まれ、コードはFooをインスタンス化し、次にFooのメソッドbar()を呼び出し、Booクラスをインスタンス化します。明らかに、以下は、バズのgetStuff()メソッドによって返されたデータが表示されます:
var_dump($a->meh);
をしかし、私はFooのの内側に行ったようにそれらを手動で割り当てる中間ステップを経由することなく、バズの利用可能な方法のすべてにアクセスしたいのですがバー法:たぶん
$this->meh = $something->getStuff()
のようなもの(もちろん、これは動作しません):
$a = new Foo;
$a->bar(); //instantiates Baz as $something $a->something->fromBaz(); //$something is an instance of Baz, yes? No?
私は、これは理にかなって願っていますし、私は自分のノートの問題を混同していませんでした。ああ! > _ <
したがって、OPの$ a-> something-> fromBaz()は機能しますか?つまり、彼の何かとあなたのバズはバズのインスタンスですか? –
いいえ、$ somethingはbar()メソッドのローカル変数なので、OPは機能しません。彼は何かをクラス変数にして$ thisを使って設定し、Fooオブジェクトを通してクラス外の新しいBazオブジェクトにアクセスする必要があります。 –
素晴らしい!私は元のコードを変更することはできませんが、実際にこの作業を見たいので、実際のコードを複製し、Bazをクラス変数にインスタンス化していた変数を宣言したとおりに動作させます。それは私の頭の中でOOP全体をよりストレートにするのに役立ちます。ありがとう(FSUに行く)。 – Stuart