Class_Aの関数の1つでClass_B関数を使用しようとしています。しかし、多くのClass_Bの関数には、問題の原因となる$this
が含まれています。クラスのインスタンス化と異なるクラスのメソッドへのアクセス
class Class_A
{
function hello()
{
require('class_b.php');
echo 'Hello ' . Class_B::person();
}
function bye()
{
require('class_b.php');
echo 'Bye ' . Class_B::person();
}
}
class Class_B
{
function person()
{
// various operations and variables
echo $this->get_user($id);
}
}
私はCLASS_Aファイルを実行すると私はCLASS_Aクラスをインスタンス化するとき$この値が変更されると思うので、私はCall to undefined method Class_A::person() in (...)
を取得する:これらは、両方のクラス(各クラスは、独自のファイルにはもちろんである)です。 Class_Bの値を上書きします。どうすればこれをやめることができますか?
また、別の質問:Class_Aのすべての機能からClass_Bにアクセスするにはどうすればよいですか?私はクラスを再宣言したくありません。これを行う必要がありますか:
class Class_A
{
function function1()
{
require('class_b.php');
$class_b = new Class_B();
// code
}
function function2()
{
require('class_b.php');
$class_b = new Class_B();
// code
}
}
またはコンストラクタなどを使用する必要がありますか?
これはうまくいった。あなたの投稿を編集して最終的な '}'を追加しようとしましたが、それは私にはできませんでした! – hohner