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 :: Метод public, static

 PHP.SU

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


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

> Без описания
Sanek_OS9
Отправлено: 18 Января, 2014 - 11:11:07
Post Id



Гость


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


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




Здравствуйте, скажите почему на некоторых хостингах если объявить метод как:

К нему можно обратится как $class->test() ; и class::test() ;
А на некоторых если class::test() ; вызовет ошибку?
По сути если обращаться class::test() ; метод должен быть статическим, но вопрос в том что на некоторых хостингах можно так обращаться к нему как к статическом, а на некоторых это вызовет ошибку. От чего это зависит?
 
 Top
caballero
Отправлено: 18 Января, 2014 - 11:16:58
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




от версии PHP и настройки вывода предупреждений
просто обращайся к методу как положено


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
OrmaJever Модератор
Отправлено: 18 Января, 2014 - 11:21:40
Post Id



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


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


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




старые не опытные версии позволяли такой (class::test()) вызов для не статических методов.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 18 Января, 2014 - 11:37:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




OrmaJever пишет:
старые не опытные версии позволяли такой (class::test()) вызов для не статических методов.

Новые тоже позволяют. Дело другое, что всегда будет выдаваться предупреждение.

Завершится ли ошибкой такой вызов, или нет - зависит от того, использует ли не статический метод, вызванный как статический, обращение к контексту текущего объекта (то есть $this)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
OrmaJever Модератор
Отправлено: 18 Января, 2014 - 12:58:46
Post Id



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


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


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




как сделать оператор пространства имён как в с++, дак у них проблемы с парсером, а как использовать этот оператор без дела дак пожалуйста!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
EuGen Администратор
Отправлено: 18 Января, 2014 - 13:19:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




OrmaJever
В этом Вы не правы. Простое действие - гораздо сложнее, чем кажется. Больше можно прочесть здесь, но и это - далеко не полное объяснение имеющейся картины.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Master._pascal
Отправлено: 22 Января, 2014 - 11:54:35
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  class myclass {
  3.   public function foo() {
  4.     echo "privet";
  5.   }
  6. }
  7.   class a  extends myclass {
  8.  
  9.  
  10.  }
  11.  a::foo();
  12.     ?>

работает
 
 Top
teddy
Отправлено: 22 Января, 2014 - 13:02:56
Post Id


Участник


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


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




Master._pascal пишет:
работает

работать то работает, но не надо так делать. ошибка есть просто ты ее невидишь
пропиши в начале файла error_reporting(E_STRICT);
 
 Top
esterio
Отправлено: 22 Января, 2014 - 13:10:49
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




а подробней статическый вызов не статического метода
 
 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