PHP RFC: зарезервируйте еще больше типов в PHP 7 утверждает, что следующие слова теперь зарезервированы в контексте имен классов, интерфейсов и признаков и пространств имен: ресурс, объект, смешанный и числовой.
Тем не менее, следующий код действительный в PHP 7.
class resource {}
class object {}
class mixed {}
class numeric {}
Я хочу назвать мой интерфейс Resource
но мне было бы противно, если бы PHP внезапно сделал это зарезервированным словом mid-PHP 7 Release Stream.
Resource
, или нет? РЕДАКТИРОВАТЬ: В свете обсуждения, которое последовало, выделив эти слова были только мягкий зарезервированный кажется, есть еще один ключевой вопрос, который нужно задать. Мне кажется, слово должно быть зарезервировано или нет, и что мягкое резервирование состояние не имеет смысла, поэтому:
но мне было бы противно, если бы PHP внезапно сделал это зарезервированным словом mid-PHP 7 Release Stream.
Ну, если у вас есть знания, было бы глупо назвать это, например. Ресурс и рискуй.
В свете этого очевидного конфликта принятого PR с эмпирическими данными, представленными здесь, и отсутствия каких-либо подобных оговорок в источнике, могу ли я с уверенностью назвать свой интерфейс Ресурсом или нет?
Нет. Если вы не знаете наверняка, что это снова за столом, это было бы довольно глупо.
Может ли патч для этого пиара все еще быть реализован в PHP 7.x или он должен ждать до следующего PHP?
Они в настоящее время мягко защищены согласно наше руководство:
Soft reserved words
resource (as of PHP 7) object (as of PHP 7) mixed (as of PHP 7) numeric (as of PHP 7)
неважно, будут ли они действительно зарезервированы.
Является ли отсутствие каких-либо обязательств по его внедрению индикатором того, что он никогда не будет реализован в какой-либо будущей версии?
Ни у кого нет хрустального шара нет. Никто не может сказать вам, что происходит в любой будущей версии.
Почему мягкое резервирование было создано вместо «жесткого» резервирования этих слов?
Потому что это, возможно, довольно большой перерыв до нашей эры. То же самое произошло при устаревании старого mysql_*
API. Таким образом, каждый заранее знает, как его не использовать, пока он не стал проблемой.
Цель «мягкого бронирования» — дать вам время исправить свой код. Это позволяет вам перейти на PHP 7 сейчас, а не заставлять вас сначала найти все варианты использования этих ключевых слов и исправить их. Но вас предупреждают, что вы должны их исправить, так как будущие обновления могут нарушить ваш код.
Это похоже на причину отказа от функций, которые планируется удалить в будущем.
Что касается того, почему они решили жестко зарезервировать некоторые слова, а другие — мягко резервировать, то это, вероятно, потому, что они знали, что последний использует много сайтов, поэтому их немедленное резервирование усложнит обновление для многих сайтов.