2016-11-24 5 views
0

У меня есть класс, который выглядит следующим образом:Почему __get вызывается вместо __call, когда я вызываю несуществующий метод?

class MyClass 
{ 
    public __get($prop) 
    { 
     $method = 'get' . ucfirst($prop); 
     if (method_exists($this, $metodo)) 
      return $this->$metodo(); 
     if (property_exists($this, $prop)) 
      return $this->$prop; 

     throw new Exception("Nonexisting property $prop"); 
    } 

    public function __call($method, $args) 
    { 
     $prop = strtr($method, 'add', ''); 
     $prop = lcfirst($prop); 

     if (is_array($this->$prop)) 
      array_push($this->$prop, $args[0]); 
    } 
} 

Но если я $obj->addTags('test'); он называет __get, ведьма дает мне исключение с сообщением: «несуществующие addTags недвижимости»

Что я должен сделать, чтобы мой __call был вызван вместо моего __get?

Заранее благодарен!

ответ

0

Я только что заменил strtr для str_replace. Я не получил правильное имя, поэтому теперь он работает.

Я помечаю его как ответ, как только это разрешено Stack Overflow.

:-D