2015-06-28 3 views
0

Я бы хотел вызвать статический метод таким образом, чтобы имя и имя класса были переменными.PHP - вызов переменного статического метода с использованием оператора разрешения области видимости

Пример:

class QQQ { 
    public function www($x) { 
     echo $x; 
    } 
} 

$q = 'QQQ'; 
$w = 'www'; 

$q::$w(7); // this is what I am trying to do but it throws an error. 

Мысли?

+0

Вы не определили $ x, поэтому ошибка –

+0

Я поставил что-то вместо $ x, такую ​​же ошибку. – daryqsyro

+0

Ваш метод ** не статичен **! – Rizier123

ответ

0

Просто нужно изменить

public function www($x) { 

в

public static function www($x) { 

Потому что, вы вызываете его области действия разрешения оператора :: так, он должен быть статическим ИЛИ вы должны изменить способ, которым Вы позвонив по этому адресу

$test = new $q; 

$test->$w(5); 

Должно работать, в зависимости от того, что вы пытаетесь с ним сделать.

+0

Не могли бы вы объяснить, почему? Непосредственно вызов QQQ :: foo (7) выполняет работу. Но называя его $ q :: $ w (7), имя функции должно быть строкой – daryqsyro