Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2011, 20:02   #1
Go6a
Пользователь
 
Регистрация: 27.01.2008
Сообщений: 50
По умолчанию статические методы

Читаю официальный мануал http://www.php.net/manual/ru/language.oop5.basic.php , и возникло небольшое непонимание.
PHP код:
<?php
class A
{
    function 
foo()
    {
        if (isset(
$this)) {
            echo 
'$this определена (';
            echo 
get_class($this);
            echo 
")\n";
        } else {
            echo 
"\$this не определена.\n";
        }
    }
}

class 
B
{
    function 
bar()
    {
        
A::foo();
    }
}

$a = new A();
$a->foo();
A::foo();
$b = new B();
$b->bar();
B::bar();
?>
Метод foo класса A не определен как статический, но в классе B он вызывается как статический. Почему? В мануале сказано, что "Объявление свойств и методов класса статическими позволяет обращаться к ним без создания экземпляра класса.". Но в нашем примере метод не объявлен статическим, значит и без создания экземпляра класса к нему, соответственно, обращаться нельзя!
Go6a вне форума Ответить с цитированием
Старый 12.10.2011, 21:30   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Там есть пояснение:
Цитата:
$this является ссылкой на вызываемый объект. Обычно это тот объект, которому принадлежит вызванный метод, но может быть и другой объект, если метод был вызван статически из контекста другого объекта.
А насчёт "обращаться нельзя!" - можно, но не желательно, т.к. такое поведение генерирует предупреждение уровня E_STRICT:
Цитата:
При попытке вызова нестатических методов статически выводится предупреждение уровня E_STRICT.
PHP код:
error_reporting(2048); 
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
статические данные Kukurudza Общие вопросы C/C++ 3 17.09.2011 15:28
Статические массивы aus Общие вопросы C/C++ 1 17.10.2010 15:32
Классы и статические методы. profi Общие вопросы по Java, Java SE, Kotlin 4 29.03.2010 09:09
статические переменные cooperOk JavaScript, Ajax 1 18.11.2009 12:01
Найти все статические методы... lordsyrius Общие вопросы Delphi 4 05.04.2009 23:52