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 :: К статическому методу можно получить доступ как к методу объекта? О_о

 PHP.SU

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


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

> Без описания
like_you
Отправлено: 09 Июля, 2014 - 02:08:55
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


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




Странно, что РНР не ругается когда пробуешь получить доступ к статическому методу как к обычному методу объекта:
PHP:
скопировать код в буфер обмена
  1. class A{
  2.        
  3.         public static $static_var = 'this is static var';
  4.        
  5.         public static function static_method()
  6.         {
  7.                 echo 'this is static_method()';
  8.         }
  9. }
  10.  
  11. $obj = new A;
  12. $obj->static_method();

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

(Отредактировано автором: 09 Июля, 2014 - 02:10:45)



-----
Створюю український хабр
 
 Top
DelphinPRO
Отправлено: 09 Июля, 2014 - 08:13:14
Post Id



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


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


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




Еще как ругается, выдавая ошибки Strict error.... Просто у вас выключен этот уровень ошибок.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 09 Июля, 2014 - 09:20:54
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




на самом деле все объекты это просто данные
методы лежат отдельно
вернее данные лежат отдельно
то есть когда ты выполняешь одинаковый метод разных экземпляров то выполняется буквально один и тот же метод получивший ссылку на смещение данных экземпляра
потому возможен такой фокус с методами
а вот если данных по смещению нет то их нет
статические данные хранятся какбы рядом с методами и доступны для всех экземпляров
это все приблизительное объяснение но как-то так
 
 Top
like_you
Отправлено: 09 Июля, 2014 - 12:54:38
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


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




DelphinPRO пишет:
Еще как ругается, выдавая ошибки Strict error.... Просто у вас выключен этот уровень ошибок.

Нет, для тестов я всегда использую локальную машину, где установлена php-5.4.11-nts-Win32-VC9-x86, и где использую php.ini у которой удалил приставку "-development"... короче я еще специально сейчас убедился, что выводятся все ошибки.
CODE (text):
скопировать код в буфер обмена
  1. error_reporting = E_ALL
  2. display_errors = On
  3. display_startup_errors = On
  4. ignore_repeated_errors = Off
  5. track_errors = On
  6. html_errors = On
и т.д.

DelphinPRO, так у вас на чем выдаются ошибки, на том приведенном мной примере, и который не меняли?


-----
Створюю український хабр
 
 Top
DelphinPRO
Отправлено: 09 Июля, 2014 - 13:05:27
Post Id



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


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


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




like_you пишет:
DelphinPRO, так у вас на чем выдаются ошибки

нет-нет, я ошибся Улыбка
ругается, наоборот, при обращении к обычному методу как к статике.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 09 Июля, 2014 - 13:06:03
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




Цитата:
error_reporting = E_ALL | E_STRICT

(Добавление)
E_STRICT в E_ALL не входит
 
 Top
like_you
Отправлено: 09 Июля, 2014 - 13:23:40
Post Id


Гость


Покинул форум
Сообщений всего: 82
Дата рег-ции: Июнь 2010  
Откуда: Харківська обл. с. Криштопівка


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




LIME пишет:
error_reporting = E_ALL | E_STRICT
Начиная с версии 5.4 входит


-----
Створюю український хабр
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB