referans veya değer tarafından VAR geçmek için zaman __call yöntemi bilmek gerekiyor

0 Cevap

Ben sihirli farklı nesneler yöntemlerini çağırmak için __call yöntemi kullanan bir nesne var.

Bu yöntem, bir referans olması parametrelerinin birini veya daha fazlasını gerektiren bir yöntem çağırmak için kullanılacak zamanlar vardır.

Php 5.3 çağrı zaman olduğu gibi pass-by-reference yüzden referans argüman ileterek itimat edemez onaylanmaz. Ben argümanlar referans veya değer geçirilecek gerekiyorsa tahmin etmek gerekir!

Ben kodu bu açıklamaya çalışacağız. Ben şu iki sınıf vardır:

  • Main_Object
  • Extension_Object

note: iki sınıf arasında herhangi bir miras yapısı vardır.

class Main_Object  {

 public function __call($method, $arguments)
 {
  // check this method is in an extended class
  // …

  $ext = new Extension_Object();

  // call method in extension object
  return call_user_func_array(array($ext, $method), $arguments);
 }
}

class Extension_Object {

 // takes two arguments
 public function foo($p1, $p2)
 {
  // ...
 }

 // takes two arguments, the first being a reference
 public function bar(&$p1, $p2)
 {
  // ...
 }
}

Şu anda bir PHP hatası veya uyarı oluşturmadan bar () aramak için bir yol bulamıyorum

$obj = new Main_Object();

// works as expected
$obj->foo($bacon, $cheese);

// MESSAGE call-time pass-by-reference has been deprecated
$obj->bar(&$bacon, $cheese);

// WARNING parameter 1 expected to be a reference
$obj->bar($bacon, $cheese);

0 Cevap