私はこれに似たコードを持っています:
class A
{
public function a()
{
echo "I'm at 'a' function of the class 'A'<br>";
}
public function b()
{
echo "I'm at 'b' function of the class 'A'<br>";
}
// ... and several other functions.
public function z()
{
echo "I'm at 'z' function of the class 'A'<br>";
}
}
class B
{
public function a()
{
echo "I'm at 'a' function of the class 'B'<br>";
}
public function b()
{
echo "I'm at 'b' function of the class 'B'<br>";
}
// ... and several other functions.
public function z()
{
echo "I'm at 'z' function of the class 'B'<br>";
}
}
class Special
{
public function construct($param)
{
//This code will not work. Is there an alternative?
$this = new $param;
}
}
$special = new Special("A");
$special->a();
$special = new Special("B");
$special->b();
Ouput:
I'm at 'a' function of the class 'A'
I'm at 'b' function of the class 'B'
Special
問題は、渡されたクラスからメソッドを実行できるクラス (この場合) を本当に書きたいということです。
これを実行するために考えることができる唯一の醜い方法は、A と BI にある各関数に対して、次のようなコードを書くことです。
public function h()
{
// $param could be 'A' or 'B';
$this->param->h();
}
しかし、「A」または「B」クラスにあるすべての関数に対してこれを行う必要があるため、これを行うのは本当に好きではありません。
私が望む主なことは、Special
クラスがコンストラクトメソッドの引数として渡された他のクラスであるかのように関数を実行できることです。
どうすればこの問題を解決できますか?