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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 15:09   #1
Gen_r_questions
Пользователь
 
Регистрация: 13.02.2011
Сообщений: 81
По умолчанию Self

Как использовать self
Код:
<?php
class A {
    public function a1()
    {
        print 'a1,';
        $this->a2();
        self::a2();//Почему нет ошибки, a2() не static же
    }
   
    public function a2()
    {
        print 'a2,';
    }
}

$a = new A();
$a->a1();
A::a2();

Последний раз редактировалось Gen_r_questions; 10.04.2011 в 15:29.
Gen_r_questions вне форума Ответить с цитированием
Старый 11.04.2011, 00:43   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

А при чем тут static? self всего лишь указывает на этот же класс. Т.е. у вас это будет означать ... "вызываем метод а2 того же самого класса"
Cronos20 вне форума Ответить с цитированием
Старый 11.04.2011, 14:47   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

В начале файла напишите
PHP код:
error_reporting(E_ALL E_STRICT); 
и вуаля.

Вызов нестатичного метода через статичный оператор вызывает ошибку типа E_STRICT, которая не выводится при настройках по умолчанию. Фактически такие "фокусы" как неправильные вызовы методов остаются на совести программистов и в то же время дают чуть больше гибкости.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 13.04.2011, 17:39   #4
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
В начале файла напишите
PHP код:
error_reporting(E_ALL E_STRICT); 
и вуаля.

Вызов нестатичного метода через статичный оператор вызывает ошибку типа E_STRICT, которая не выводится при настройках по умолчанию. Фактически такие "фокусы" как неправильные вызовы методов остаются на совести программистов и в то же время дают чуть больше гибкости.
простыми словами должно быть: public static function(){}
8oOoRPM вне форума Ответить с цитированием
Ответ


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