PHP - Gümrük bildirisi Çoklu kalıtım - Nasıl işlevlerine çoklu parametreleri geçirmek için

0 Cevap php

Ben bu iken nasıl PHP sahte çoklu kalıtım (PHP doğrudan birden çok devralma desteklemiyor beri) için arama bulundu.

http://stackoverflow.com/questions/356128/can-i-extend-a-class-using-more-than-1-class-in-php/356431#356431

İş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

0 Cevap