2015-12-02 3 views
1

У меня есть следующий класс:вызова метода класса с переменной

class Actions_con extends Calls 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function redirect() 
    { 
     $this->_data['request'] = '_' . $this->url[3] . '()'; 
     return $this->{$this->_data['request']}; 
    } 
} 

В родительском классе Calls я следующий метод:

protected function _login(){ 
    echo 'login'; 
}

В моем базовом классе свойство $this->url[3] равно " авторизоваться". И что я хочу сделать, это назвать этот метод этим именем переменной. Возможно ли это?

ответ

1

Вы находитесь в непосредственной близости от решения. Вам просто не нужно конкатенировать круглые скобки, вместо этого ставьте их там, где вы вызываете метод, например.

public function redirect() 
{ 
    $this->_data['request'] = '_' . $this->url[3]; 
    return $this->{$this->_data['request']}(); 
             //↑↑ See here 
}
+0

спасибо за решение, но у меня есть следующий следующий вопрос: хорошо ли это делать? –

+1

@ArnasPecelis Если вы используете переменные для вызова функции/метода, вам просто нужно убедиться, что метод существует. – Rizier123

Смежные вопросы