Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > вызов метода по его имени


Автор: Asbestos 30.1.2008, 11:59
есть вот такой код
Код

switch( $key )
{
    case 0:        $this->make(); break;
    case 1:        $this->edit(); break;
    case 2:        $this->delete(); break;
}


возможно ли сделать нечто подобное? и если да, то почему у меня не заработало? 
Код

    $functions = array( '0' => $this->make(), '1' => $this->edit(), '2' => $this->delete() );

и далее
Код

    $this->function[$key]();

Автор: Daevaorn 30.1.2008, 12:02
Код

 $functions = array( '0' => $this->make(), '1' => $this->edit(), '2' => $this->delete() );

() - убрать

Цитата(Asbestos @  30.1.2008,  12:59 Найти цитируемый пост)
 $this->function[$key]();

что такое function? Может functions?

Автор: skyboy 30.1.2008, 12:15
для вызова функции по её имени лучше бы использоваться специально предназначенную функцию http://ua.php.net/manual/en/function.call-user-func.php. для методов объектов можно использовать http://ua.php.net/manual/en/function.call-user-method.php, если PHP уж очень старой версии(для версий выше 4.1 рекомендуется использовать call_user_func).

Автор: flashaa 30.1.2008, 12:15
Код

 $functions = array( '0' => $this->make(), '1' => $this->edit(), '2' => $this->delete() );


Не помню, что в PHP был тип "функция". Путаете с JS.
Надо хранить имена ф-ций, а затем вызывать вот так:

Код

$functions = array( 'make', 'edit', 'delete' );
call_user_func(array($this, $functions[$key]));


Автор: Asbestos 30.1.2008, 12:23
всем спасибо  smile  все заработало

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)