ФорумПрограммированиеPHP для идиотовPHP и ООП → Название класса в переменной и статический метод

Название класса в переменной и статический метод

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 13 июля 2009 г. 7:08

    $className::staticMethod();

    syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM

    ?
  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 июля 2009 г. 7:14, спустя 6 минут 17 секунд

    $className - созданный объект из него можно только через -> методы вызывать
    className класс у него можно вызывать только статики ::
    {+++69+++} проще говогя

    $klass = new MyClass();
    $klass->method();

    $klass = "MyClass";
    $klass::method();
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 13 июля 2009 г. 7:16, спустя 1 минуту 40 секунд

    CTAPbIu_MABP, ты меня убил.
    $klass

    я от тебя такого не ожидал))
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 13 июля 2009 г. 7:23, спустя 6 минут 42 секунды

    Да дело в том, что статический метод возвращает объект этого же класса (т.е. как бы альтенативный конструктор)

    Через call_user_func_array работает
    call_user_func_array(array($class, 'methodName'), $params);



  • Trej Gun

    Сообщения: 5299 Репутация: N Группа: в ухо

    Spritz 13 июля 2009 г. 7:41, спустя 18 минут 2 секунды

    NRG, а вот хуй тебе это из явы взято

    там при объявлении переменной не надо тавить бакс и получается что имя class совпадает с зарезервированым свовом и компилятор ругаеццо, поэтому приходится писать klass {+++391+++} Timur, хуй его знает вот тут я писал как это все работает
    смотри последний пример кода
    http://mabp.kiev.ua/2007/07/25/pattern_factory/
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 13 июля 2009 г. 7:48, спустя 7 минут 9 секунд

    сайт лежит {+++197+++}

    нашел в кеше яндекса. Ну у тебя так и есть
    if(is_callable(array($name,$func))){
        return call_user_func_array(array($name,$func),$params); // метод $name::$func вызван статично


    я ж снял вопрос выше

Пожалуйста, авторизуйтесь, чтобы написать комментарий!