Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: что лучше и удобней? [2]
Форумы портала PHP.SU » » Объектно-ориентированное программирование » что лучше и удобней?

Страниц (2): « 1 [2]
 

16. OrmaJever - 30 Сентября, 2011 - 11:27:07 - перейти к сообщению
MrBeard в документации не всё можно описать, некоторые вещи нужно понимать самому. Ну вобще ещё от себя скажу то что уже говорили в этой теме, статический метод пренадлежит классу, а динамические обьектам. Класс может быть только один, а обьектов много. Вот небольшой пример как статический метод обьеденяет обьекты
PHP:
скопировать код в буфер обмена
  1. class a {
  2.         static public $a = 'static var';
  3.         public $b = 'dynamic var';
  4. }
  5.  
  6. $a = new a();
  7. $b = new a();
  8. $a::$a = 'changed static var';     // меняем статические значение только в обьекте $a
  9. $a->b = 'changed dynamic var'; // ну и для примера динамическое тоже
  10. echo $a::$a, '<br>'; // changed static var - всё верно, мы поменяли значение на строку выше
  11. echo $a->b, '<br>'; // changed dynamic var - динамические из обьекта $a тоже поменялось
  12. echo $b::$a, '<br>';// changed static var - опа, а почему так? ведь мы не трогали обьект $b, да потому что статические методы общие для всех копий обьекта - поменял в одном поменялись везьде
  13. echo $b->b; // dynamic var - тут всё понятно, не изменилось потому что мы его не трогали

Вот этим и отличаются статически от динамических свойств.
17. MrBeard - 30 Сентября, 2011 - 11:35:53 - перейти к сообщению
да я знаю, чем отличается статическое свойство от динамического. и статический метод от динамического.
всё, что меня сейчас удивило - это то, что в документации нету упоминания о возможности вызова статического метода через экземпляр класса. и то, что о вызове статических свойств и методов через static:: можно узнать только из комментариев(хотя, может, плохо искал.)
и то, что это возможно, не говорит о том, что я брошусь везде это использовать., безумно хохоча и размахивая руками. просто удивление вызвало, а мне тут уже объясняют про существующие утверждения, когда и как надо делать. (без, кстати, указания, где эти утверждения написаны).
18. OrmaJever - 30 Сентября, 2011 - 12:59:24 - перейти к сообщению
MrBeard пишет:
это то, что в документации нету упоминания о возможности вызова статического метода через экземпляр класса

ну если есть про статические свойства то зачем писать 2 раз одно и тоже?
MrBeard пишет:
и то, что о вызове статических свойств и методов через static:: можно узнать только из комментариев(хотя, может, плохо искал.)

об этом нужно было узнать когда появился php 5.3. По запросу в гугле
CODE (htmlphp):
скопировать код в буфер обмена
  1. что нового в php 5.3

куча сайтов и вот один из них
http://blog[dot]web2[dot]com[dot]ua/2009/07/[dot][dot][dot]ovogo-v-php-5-3/
название "Позднее статическое связывание".

 

Powered by ExBB FM 1.0 RC1