Учитывая, насколько важен PHP с точки зрения его использования, очень удивительно узнать, что он только сейчас получает формальную спецификацию после 20 лет использования.
Языки возникают одним из двух способов. Либо академик садится и создает язык, дополненный грамматикой и формальной спецификацией, либо увлеченный программист просто реализует то, что необходимо.
В случае PHP это был специальный язык, предназначенный для облегчения создания веб-страниц. В результате это немного беспорядок, и тот факт, что он развивался по мере роста сложности, не помог. Спецификация языка была, по сути, его текущей реализацией и документацией о том, как его использовать.
Теперь группа во главе с Facebook создала проект спецификации, который доступен на GitHub. Определение включает в себя как синтаксис, так и семантику. Группу возглавляет Facebook, потому что компания широко использует PHP и нуждается в том, чтобы он был языком, способным к логической эволюции, отсюда и интерес к формальной спецификации. В группу также входят Расмус Лерндорф, человек, который изобрел этот язык в первую очередь, и Энди Гутманс, генеральный директор Zend, поставщика инструментов PHP.
Спецификация находится в легко читаемой форме. Например;
Составные утверждения
Синтаксис
составное заявление:
{ оператор-listopt }
ведомость-список:
заявление
заявление-заявление списка
утверждение определено в §§.
Семантика
Составной оператор позволяет группе из нуля или более операторов синтаксически обрабатываться как один оператор. Составной оператор часто называют блоком.
Примеры
если (условие)
{ // фигурные скобки необходимы, так как путь true // содержит более одного оператора
// заявление-1
// заявление-2
}
ещё
{ // фигурные скобки необязательны, так как путь false // содержит только один оператор
// заявление-3
}
// ——————————————
в то время как (условие)
{ // пустой блок эквивалентен // оператору null
}
Это достаточно ясно, чтобы сделать его пригодным для проверки того, что вы поняли более неофициальную документацию. Существует, конечно, вопрос о том, насколько точно он отражает реальный мир реализации. Если вы обнаружите несоответствие в данный момент, это спецификация, которая должна будет измениться. В будущем спецификация может отвечать за то, что должна делать реализация.
Со следующей основной версией PHP, установленной как версия 7, и с работой над улучшением скорости языка в виде HHVM и PHPng Facebook, наличие фиксированной справочной спецификации очень необходимо для нас, чтобы знать, когда что-то отклоняется от стандарта.