Мы используем токенизатор для статического анализа кода, а также модифицируем код для выполнения проверок во время выполнения определенных вещей. Это делается с помощью токенизатора и скриптов на основе токенизатора. Поскольку токенизатор - это то же самое, что и PHP на самом деле, он увеличивает вашу удачу по сравнению с написанием вашего собственного.
Я видел людей, использующих регулярные выражения, чтобы попытаться проанализировать язык. Это действительно плохая идея.
Но ...
Поскольку PHP - довольно простая и глупая грамматика, и у вас есть доступ к токенизатору, вы можете фактически остановить большинство ошибок, запретив переменные функции и позволяя вызывать только небольшое количество функций из белого списка. Если вам не нужен ООП, даже лучше.
Тем не менее, мы не уверены в том, что преодолели 100% проблем, и мы используем это для питания «песочницы» для пользователей backend , которые платят клиентам, а не каждому пользователю на планете Земля с клавиатурой и, возможно, злобой.
Я тоже думаю, что люди здесь, которые пугают идею на 100% как "плохую практику", должны понять. Есть причины для этого.