Вызов метода

Я наркоман?

  • Да

    Голосов: 3 75,0%
  • Нет

    Голосов: 1 25,0%
  • Просто еще нуб

    Голосов: 0 0,0%

  • Всего проголосовало
    4
  • Опрос закрыт .

ap4xuy

Новичок
Здравствуйте, подскажите как вызвать метод, наименование которого хранится в свойстве?


PHP:
class Products
{
  
    public $default_type_product = 'shoes';
  
 

    public function go($method,$params = array())
    {
        if(method_exists($this,$method))
        {
            $this->$method($params);
        }
        else
        {
            Как вызвать метод с помощью свойства $default_type_product?
          $method = $this->default_type_product;
          $this->$method(); - по моему бред
        }
    }
   
    public function shoes($params = array())
    {
        if(!empty($params))
        {
            foreach($params as $item)
            {
              echo $item.'<br />';
            }
        }
        else
        {
            echo "Cross <br />";
            echo "12341 <br />";
        }
    }  
}
 

ap4xuy

Новичок
Вопрос решен:
PHP:
class Products
{  
  
    public $default_type_product = 'shoes';  
   
    public function go($method,$params = array())
    {
        if(method_exists($this,$method))
        {
            $this->$method($params);
        }
        else
        {
            call_user_func(array($this, $this->default_type_product));
        }
    }

    public function shoes($params = array())
    {
        if(!empty($params))
        {
            foreach($params as $item)
            {
              echo $item.'<br />';
            }
        }
        else
        {
            echo "Cross <br />";
            echo "12341 <br />";
        }
    }  
}
 

ksnk

прохожий
Критерий бредовости остался нераскрыт :)
PHP:
 public function go($method,$params = array())
    {
        if(!method_exists($this,$method))
        {
           $method=$this->default_type_product;
        }
        $this->$method($params); 
    }
А так - не бред?
 

AnrDaemon

Продвинутый новичок
PHP:
public function __call($name, $params);
{
  if(is_callable($this->$name)
  {
    return call_user_func_array($this->$name, $params);
  }
  throw MethodNotFoundException();
}
Критерий бредовости остался нераскрыт :)
PHP:
 public function go($method,$params = array())
    {
        if(!method_exists($this,$method))
        {
           $method=$this->default_type_product;
        }
        $this->$method($params);
    }
А так - не бред?
А так не работает.
 

ksnk

прохожий
Вот так - работает (код из поста "Вопрос решен")
PHP:
public function go($method,$params = array())
    {
        if(method_exists($this,$method))
        {
            $this->$method($params);
        }
        else
        {
            call_user_func(array($this, $this->default_type_product));
        }
    }
а как у меня не работает? :eek:
 
Сверху