:: - обращение к ф-циям не созданного объекта класса, как?

Screjet

Новичок
:: - обращение к ф-циям не созданного объекта класса, как?

Реализация такого:
PHP:
$class_name = 'my_class';
$obj = new $class_name();
Вполне нормально работает, но такое:
PHP:
$class_name = 'my_class';
$result = $class_name :: my_func();
выдает ошибку еще при разборе:
"parse error, unexpected T_PAAMAYIM_NEKUDOTAYIM"

Может кому-то уже удалось решить такую проблему?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: Screjet
PHP:
$class_name = 'my_class';
$result = $class_name :: my_func();
выдает ошибку еще при разборе:
"parse error, unexpected T_PAAMAYIM_NEKUDOTAYIM"

Может кому-то уже удалось решить такую проблему?
PHP:
$result = call_user_func(array($class_name, 'my_func'));
 

Raziel[SD]

untitled00
Вот так еще можно:
PHP:
  $classname = 'myclass';
  $funcname = 'myfunc';
  $new_obj = new $classname();
  $new_obj->$funcname();
 

Raziel[SD]

untitled00
Crazy, что-то когда меня глючит, мне хочется что-то написать :)

теперь прочитал :)
 

Дмитрий Бедрин

Guest
static function

Кажеться это называеться "статическими методами объекта"
Реализовано в PHP5
 

Crazy

Developer
А чем "статические методы объекта" в PHP5 отличаются от "методов класса" в других языках?
 

Дмитрий Бедрин

Guest
Статический метод может быть вызван даже тогда когда экземпляр класса ещё не создан.
 

Crazy

Developer
А метод класса -- не может? :) Опять таки -- код на PHP4:

PHP:
class Foo {
  function bar() {
    return 1;
  }
}
Я не могу вызвать bar(), пока не создам экземпляр? :)
 

globus

Guest
Из статического метода ты не можешь обращатся к не статическим полям класса. Короче не можешь использовать $this.
 

Said

Guest
Автор оригинала: globus
Из статического метода ты не можешь обращатся к не статическим полям класса. Короче не можешь использовать $this.
Изза глобальной видимости $this в PHP4
очень даже можешь использовать ее где угодно
и даже по ней определять контекст вызова своего метода :)

Хотя это уже извращение
 

Said

Guest
Автор оригинала: Sad Spirit
PHP:
$result = call_user_func(array($class_name, 'my_func'));
кстати возвращается ли при таком вызове
значение по ссылке типа:
PHP:
$result =& call_user_func(array($class_name, 'my_func'));
??
 
Сверху