Ben bu iken nasıl PHP sahte çoklu kalıtım (PHP doğrudan birden çok devralma desteklemiyor beri) için arama bulundu.
İşte orada verilen tam kodu: -
class B {
public function method_from_b($s) {
echo $s;
}
}
class C {
public function method_from_c($s) {
echo $s;
}
}
class A extends B
{
private $c;
public function __construct()
{
$this->c = new C;
}
// fake "extends C" using magic function
public function __call($method, $args)
{
$this->c->$method($args[0]);
}
}
$a = new A;
$a->method_from_b("abc");
$a->method_from_c("def");
The problem
The example given here considers only one parameter for the function C::method_from_c($s)
. It works fine with one parameter but I have several functions of class C
, some having 2, some having 3 parameters like this:-
class C {
public function method_from_c($one,$two) {
return $someValue;
}
public function another_method_from_c($one,$two, $three) {
return $someValue;
}
}
Ve ben do not (Bu, bu birçok parametre kabul etmesi gerekir) Sınıf C işlev tanımında bir şey değiştirmek istiyorum. Örneğin Bu gibi benim C::method_from_c($s,$two)
içinde func_get_args () kullanmak istemiyorum: -
public function method_from_c()
{
$args = func_get_args();
//extract params from $args and then treat each parameter
}
Ne çalışır, böylece class A
ve __call()
işlevin içinde yapmak. I $obj->method_from_c($one,$two);
gibi fonksiyonlar Class C
aramak mümkün olmak istiyorum
Thanks
Sandeepan