модификатор public

Тема в разделе "PHP", создана пользователем chang, 31 май 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    почему оно работает ? или я чего-то не понимаю ...
    PHP Version 5.2.12

    PHP:
    class qwe{
        public function 
    asd(){
            echo 
    "<br />asd<br />";
        }
    }
    echo 
    qwe::asd();
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    потому что ты обращаешься к несуществующему статичному методу. Замени
    PHP:
    qwe::asd()
    на
    PHP:
    qwe->asd()
     
  3. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
    Если вопрос "почему работает", то ответ прост:
    А почему не должно? Ты обращаешься к публичному методу.
    Единственное что в php5 статическое обращение к не статическому методу вызовет нотайс.
    Лучше его объявить как public static function...
     
  4. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    дык вить, теоретически для начала необходимо создать экземпляр класса, ну а потом уже обращаться к его публичным методам ...

    но походу в пхп ООП еще не как у всех -)

    а какая тогда разница между статическим и публичным методом класса?
     
  5. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102

    внимательно курим http://www.php.su/learnphp/phpoo/?php5_2
     
    chang нравится это.
  6. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    данное предложение нужно читать в контексте с предыдущими, а в частности с вышеуказанным примером

    тооли я дурак толи ссылка не фтему....

    PHP:
    <?php
       
    class qwe{
        public function 
    asd(){
            echo 
    __METHOD__;
        }
        static function 
    asd2(){
            echo 
    __METHOD__;
        }    
    }
    echo 
    qwe::asd();
    echo 
    "<br />";
    echo 
    qwe::asd2(); 
    ?>
    если вы полностью ознакомились с предложенными вами доками, будьте так любезны объяснить чем собственно отличаются эти два метода?
     
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    извольте. Ваш вопрос читается как "чем отличается квадратное от красного?". ответ будет такой же - паблик функции видны всем, а статические функции создаются для всего класса а не для конкретного экземпляра.
     
  8. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Да ничем они не отличаются. В php все методы статические. И ругаться оно начинает только на этапе выполнения, если у тебя в этом статическом методе встречается $this, а $this соответственно не объявлен, если нету экземпляра класса, и вот тут-то оно и ругнется. А если $this не встречается - то и пох, обращаешься ли ты к методу конкретной инстанции класса через $obj->asd(), или через qwe::asd() - оно его запустит. На то это и PHP, а не какой-нибудь строгий типизированый язык.
     
Статус темы:
Закрыта.