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 :: Версия для печати :: Метод public, static
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Метод public, static

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

1. Sanek_OS9 - 18 Января, 2014 - 11:11:07 - перейти к сообщению
Здравствуйте, скажите почему на некоторых хостингах если объявить метод как:

К нему можно обратится как $class->test() ; и class::test() ;
А на некоторых если class::test() ; вызовет ошибку?
По сути если обращаться class::test() ; метод должен быть статическим, но вопрос в том что на некоторых хостингах можно так обращаться к нему как к статическом, а на некоторых это вызовет ошибку. От чего это зависит?
2. caballero - 18 Января, 2014 - 11:16:58 - перейти к сообщению
от версии PHP и настройки вывода предупреждений
просто обращайся к методу как положено
3. OrmaJever - 18 Января, 2014 - 11:21:40 - перейти к сообщению
старые не опытные версии позволяли такой (class::test()) вызов для не статических методов.
4. EuGen - 18 Января, 2014 - 11:37:03 - перейти к сообщению
OrmaJever пишет:
старые не опытные версии позволяли такой (class::test()) вызов для не статических методов.

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

Завершится ли ошибкой такой вызов, или нет - зависит от того, использует ли не статический метод, вызванный как статический, обращение к контексту текущего объекта (то есть $this)
5. OrmaJever - 18 Января, 2014 - 12:58:46 - перейти к сообщению
как сделать оператор пространства имён как в с++, дак у них проблемы с парсером, а как использовать этот оператор без дела дак пожалуйста!
6. EuGen - 18 Января, 2014 - 13:19:32 - перейти к сообщению
OrmaJever
В этом Вы не правы. Простое действие - гораздо сложнее, чем кажется. Больше можно прочесть здесь, но и это - далеко не полное объяснение имеющейся картины.
7. Master._pascal - 22 Января, 2014 - 11:54:35 - перейти к сообщению
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.     ?>

работает
8. teddy - 22 Января, 2014 - 13:02:56 - перейти к сообщению
Master._pascal пишет:
работает

работать то работает, но не надо так делать. ошибка есть просто ты ее невидишь
пропиши в начале файла error_reporting(E_STRICT);
9. esterio - 22 Января, 2014 - 13:10:49 - перейти к сообщению
а подробней статическый вызов не статического метода

 

Powered by ExBB FM 1.0 RC1