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

Статус
В этой теме нельзя размещать новые ответы.

chang

Постоялец
Регистрация
20 Ноя 2009
Сообщения
363
Реакции
118
почему оно работает ? или я чего-то не понимаю ...
PHP Version 5.2.12

PHP:
class qwe{
    public function asd(){
        echo "<br />asd<br />";
    }
}
echo qwe::asd();
 
почему оно работает ? или я чего-то не понимаю ...
PHP Version 5.2.12

PHP:
class qwe{
    public function asd(){
        echo "<br />asd<br />";
    }
}
echo qwe::asd();
потому что ты обращаешься к несуществующему статичному методу. Замени
PHP:
qwe::asd()
на
PHP:
qwe->asd()
 
Если вопрос "почему работает", то ответ прост:
А почему не должно? Ты обращаешься к публичному методу.
Единственное что в php5 статическое обращение к не статическому методу вызовет нотайс.
Лучше его объявить как public static function...
 
А почему не должно? Ты обращаешься к публичному методу.

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

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

а какая тогда разница между статическим и публичным методом класса?
 
внимательно курим Для просмотра ссылки Войди или Зарегистрируйся

данное предложение нужно читать в контексте с предыдущими, а в частности с вышеуказанным примером

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

PHP:
<?php
   
class qwe{
    public function asd(){
        echo __METHOD__;
    }
	static function asd2(){
		echo __METHOD__;
	}    
}
echo qwe::asd();
echo "<br />";
echo qwe::asd2(); 
?>

если вы полностью ознакомились с предложенными вами доками, будьте так любезны объяснить чем собственно отличаются эти два метода?
 
извольте. Ваш вопрос читается как "чем отличается квадратное от красного?". ответ будет такой же - паблик функции видны всем, а статические функции создаются для всего класса а не для конкретного экземпляра.
 
будьте так любезны объяснить чем собственно отличаются эти два метода?

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