我有一个类似于这个的代码:
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
该类可以运行函数,就好像它是作为构造方法的参数传递的另一个类一样。
我该如何计算这个问题?