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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: что лучше и удобней? [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Опрос
self:: или $this->
Для голосования и просмотра результатов опроса войдите или зарегистрируйтесь

> Описание: self:: или $this->
OrmaJever Модератор
Отправлено: 30 Сентября, 2011 - 11:27:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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 - тут всё понятно, не изменилось потому что мы его не трогали

Вот этим и отличаются статически от динамических свойств.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
MrBeard
Отправлено: 30 Сентября, 2011 - 11:35:53
Post Id



Гость


Покинул форум
Сообщений всего: 97
Дата рег-ции: Авг. 2011  


Помог: 2 раз(а)




да я знаю, чем отличается статическое свойство от динамического. и статический метод от динамического.
всё, что меня сейчас удивило - это то, что в документации нету упоминания о возможности вызова статического метода через экземпляр класса. и то, что о вызове статических свойств и методов через static:: можно узнать только из комментариев(хотя, может, плохо искал.)
и то, что это возможно, не говорит о том, что я брошусь везде это использовать., безумно хохоча и размахивая руками. просто удивление вызвало, а мне тут уже объясняют про существующие утверждения, когда и как надо делать. (без, кстати, указания, где эти утверждения написаны).

(Отредактировано автором: 30 Сентября, 2011 - 11:43:58)

 
 Top
OrmaJever Модератор
Отправлено: 30 Сентября, 2011 - 12:59:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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/
название "Позднее статическое связывание".


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB