Сделать пространства имен обратно совместимыми в PHP

Поэтому я читал о пространствах имен PHP, и я понял, что в версиях выше 5.3, если вы пишете

namespace MyNamespace 

вы получаете ошибку синтаксического анализа.

Есть ли способ избежать этого, т.е. сделать пространства имен обратно совместимыми, поэтому код не просто сбой?

Solutions Collecting From Web of "Сделать пространства имен обратно совместимыми в PHP"

Краткий ответ: Нет.

Более длинный ответ: (добавлено для сбора полезной информации из других удаленных ответов). Новый синтаксис приведет к ошибкам синтаксического анализа в PHP, поэтому вы не можете использовать обработчик ошибок клиента для обнаружения ошибок, сгенерированных в версиях <5.3. Теоретически вы могли бы написать предварительный процессор для сканирования и / или выполнить lex / parse в источнике, а затем написать что-то обратно, что было бы совместимо с PHP 5.2, но это создает больше проблем, чем решает.

Возможно, вы можете запросить версию используемого PHP и вызвать eval, если она достаточно высока. Я не знаю, будет ли это работать.

На самом деле, я думаю, это возможно, но я не верю, что это того стоит. Идея заключалась бы в создании настраиваемой оболочки потока по умолчанию, которая будет анализировать файлы PHP в соответствии с новой грамматикой и вносить соответствующие изменения в синтаксис, чтобы она была действительной PHP <5.3.

Оболочке пришлось бы заменить имена классов, такие как Foo\Bar\Baz Foo_Bar_Baz . В настоящее время я не уверен, есть ли что-то, что сделало бы это невозможным.

Во всяком случае, я не считаю, что это стоит усилий. Обновите PHP 5.3.

О, это означает, что код оболочки должен быть совместим с PHP <5.3.