2010-11-25 2 views
1

Можно ли вызвать метод, когда имя метода хранится в переменной? Что такое синтаксис? Предположим, у меня есть следующий PHP код:Могу ли я использовать переменную для вызова метода?

class MyClass { 
    public $default; 

    function index() { 
     /* call method named by $this->default */ 
    } 
    function method_1() {} 
    function method_2() {} 
    ... 
} 

index() вызывается по умолчанию, когда класс инициализируется, если никакой другой метод специально не называется.

Как я могу назвать один из методов в пределах index(), используя свойство MyClass->$default? То есть, если бы я обычно писал:

function index() { $this->method_1(); } 

Могу ли я использовать переменную по умолчанию для вызова правильного метода?

+0

Взгляните Http: // PHP. net/manual/en/functions.variable-functions.php – SubniC 2010-11-25 11:00:16

ответ

8

Могу ли я использовать переменную для вызова метода?

Да, вы можете. Например, внутри объекта:

$method = "method_1"; 

if (method_exists($this, $method)) 
$this->{$method}(); 
+0

+1 хороший момент, чтобы проверить, существует ли до вызова :) – SubniC 2010-11-25 11:07:50

2

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

$methodname = 'method_1'; 
$this->$methodname(); 
Смежные вопросы