Что подразумевается под статическим вызовом в определении call_user_func - PullRequest
0 голосов
/ 11 марта 2012

У меня проблемы с пониманием руководства по PHP для call_user_func, особенно описание параметра:

Функция для вызова. Методы класса также могут быть вызываться статически с использованием этой функции, передавая array($classname, $methodname) этому параметру.

Пример: использование метода класса

<?php
class myclass {
   function say_hello()
   {
       echo "Hello!\n";
   }
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
?>

Также, пожалуйста, объясните эту строку кода "call_user_func (array ($ classname, 'say_hello'))". Конечно, array($classname, 'say_hello') не является именем метода.

1 Ответ

1 голос
/ 11 марта 2012

Передача массива в call_user_func является особым случаем для вызова методов класса, статических и нестатических.В приведенном вами примере вы можете сделать это:

<?php
class myclass {
   public function say_hello()
   {
       echo "Hello!\n";
   }

   public static function say_hello_static() {
       echo "Hello static!\n";
   }
}

//Call static method
call_user_func(array('myclass','say_hello_static'));

//Call object method
$myobject = new myclass();
call_user_func(array($myobject,'say_hello'));
?>

Начиная с PHP 5.2.3, вы можете вызывать статические методы, используя строку вместо массива, например:

call_user_func('myclass::say_hello_static');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...