| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Нюансы ООП. Разница между __CLASS__ и ::class |
| Автор: PsiMagistr 23.1.2017, 13:14 | ||||||
| Ребята, у меня возник один нюанс, который не могу уразуметь... Волшебные константы. Какова разница между магическими константами __CLASS__ и ::class. Насколько я понимаю обе хранят полное имя класса с пространствами имен. http://php.net/manual/ru/language.oop5.basic.php#language.oop5.basic.class.class Вот некоторый код (рабочий) (PHP 7)
Попытка замены static::class на static::__CLASS__ ведет к ошибке... Доролнено на более простом коде:
Работает...
Ошибка. |
| Автор: Vardoulacha 23.1.2017, 15:14 | ||
http://php.net/manual/ru/language.constants.predefined.php
__CLASS__ != static::class A != B |
| Автор: PsiMagistr 23.1.2017, 15:44 | ||
Спасибо большое. Я уловил, что это не тождество. А можно ли вызвать __CLASS__ не у предка, а у наследника? |
| Автор: Vardoulacha 23.1.2017, 15:53 |
| __CLASS__ для того и нужен чтобы получить имя ТОГО КЛАССА ГДЕ СТОИТ ЭТА СТРОКА для всего остального есть ::class MyClass::class static::class MySuperClass::class |
| Автор: PsiMagistr 23.1.2017, 16:07 | ||
Просто япортирую проект с PHP 7 на PHP 5.4. А у него нет константы class. |
| Автор: Fortop 24.1.2017, 21:05 | ||
Не делай этого |
| Автор: PsiMagistr 24.1.2017, 21:46 |
| На современных стандартах все работает. Я ж не виноват, что хостер на php 5.4 гоняет. В поддержку написал - там руками развели. |