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

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

1. Rooner - 22 Марта, 2012 - 20:00:18 - перейти к сообщению
Перечитал кучу мануалов, но нигде нет явного ответа. Вот простой пример:
PHP:
скопировать код в буфер обмена
  1.   class MyClass {
  2.     function helloWorld() {
  3.       echo "Hello, world<br />";
  4.     }
  5.   }
  6.   $my = new MyClass();
  7.   $my->helloWorld();
  8.   MyClass::helloWorld();

В итоге работает и первый вывод и второй. Я думал что такой запрос MyClass::helloWorld(); будет работать только если объявить метод как статический, но нет, все итак работает. Тогда зачем вообще нужны эти статические методы?
2. Мелкий - 22 Марта, 2012 - 20:04:46 - перейти к сообщению
Включите вывод ошибок.
Второй вариант вызова некорректен и генерирует предупреждение об этом.
К неинициализированным переменным обращаться тоже нельзя, но при выключенных E_NOTICE зачастую создаётся видимость нормальной работы.
3. DelphinPRO - 22 Марта, 2012 - 20:26:27 - перейти к сообщению
статический метод - это метод класса
обычный - метод объекта класса
4. Bio man - 22 Марта, 2012 - 20:26:28 - перейти к сообщению
Мелкий пишет:
Второй вариант вызова некорректен и генерирует предупреждение об этом.
Корректен и ничего не генерирует.
5. DelphinPRO - 22 Марта, 2012 - 20:28:31 - перейти к сообщению
Bio man пишет:
Корректен и ничего не генерирует.


PHP 5.3.9:

Strict Standards: Non-static method MyClass::helloWorld() should not be called statically in W:\html\verstka.local\www\test\index1.php on line 16
Hello, world
6. Bio man - 22 Марта, 2012 - 20:31:07 - перейти к сообщению
нотисы выводит если к стат. свойству обращастся как к свойствк объекта.
(Добавление)
DelphinPRO, видимо у нас версии ниже. У меня 5.3.3
7. Мелкий - 22 Марта, 2012 - 20:35:23 - перейти к сообщению
Bio man пишет:
Корректен и ничего не генерирует.

И ты включи вывод ошибок тоже Подмигивание
По нынешним меркам все ошибки - это E_ALL | E_STRICT.
8. Bio man - 22 Марта, 2012 - 20:37:25 - перейти к сообщению
Угу, Strict выводит! Но все равно вывел Hello world! Стрикт это что за ошибки?
9. Rooner - 23 Марта, 2012 - 16:47:37 - перейти к сообщению
Спасибо за разъяснение, теперь статики стали более понятны

 

Powered by ExBB FM 1.0 RC1