Я просто спросил this question about the self::
keyword и не знал, что существует ключевое слово static::
.PHP: Когда вам понадобится ключевое слово self ::?
Мне кажется, что вы можете использовать ClassName::
, если вам нужно явно ссылаться на конкретный класс, и в противном случае вы бы хотели, чтобы self::
означал класс, называемый методом. Я пытаюсь придумать пример того, когда вам понадобится self::
, где вы не могли бы просто использовать ClassName::
.
Не могли бы вы заменить все вхождения self::
на ClassName::
, где ClassName - это имя класса класса, в котором оно находится? Не то, что было бы лучше, или даже эквивалент семантически, но более функционально говоря ...
Как вы говорите, 'self ::' ссылается на класс, метод которого находится непосредственно, 'ClassName ::', вероятно, менее эффективный способ сделать это. Я думаю, это будет похоже на привязку изображений на вашем собственном сервере через прокси –
[Этот вопрос] (http://stackoverflow.com/questions/4718808/php-can-static-replace-self?rq=1) вид адресов вопрос о том, почему вы будете использовать 'static', но я все еще ищу, почему вам нужно' self'. –
Единственное (?) «Полезное» использование для него - это когда вы обращаетесь к константам класса. Во всех остальных случаях это признак того, что вы должны делать что-то неправильно. PS: oooops, это 1-летний ответ lol – zerkms