Вставить python / dsl для скриптинга в веб-приложении PHP

Я разрабатываю веб-приложение, написанное на PHP5, которое в основном представляет собой пользовательский интерфейс поверх базы данных. Чтобы предоставить пользователям более гибкий инструмент, я хочу встроить язык сценариев, чтобы они могли выполнять более сложные вещи, такие как запросы SQL-запросов, выполнять циклы и хранить данные в переменных и так далее. В моей бизнес-области Python широко используется для написания сценариев, но я также думаю о том, чтобы создать простой доменный язык. Сценарий должен обернуть мои существующие классы PHP.

Я ищу совет, как подойти к этой задаче развития?

Обновление: я попытаюсь выполнить скриптинг в базе данных с помощью PLPGSQL в PostgreSQL. Это будет сделано пока, но я не могу использовать мои классы PHP таким образом. Подход Lua привлекателен и кажется тем, что я хочу (помимо его не Python).

    6 Solutions collect form web for “Вставить python / dsl для скриптинга в веб-приложении PHP”

    Если вы не связаны с python, вы можете использовать, например, Lua в качестве языка сценариев. Lua – очень легкий язык, простой в освоении и развитый с учетом вложения. Есть уже, по крайней мере, два расширения PHP, которые прекрасно встраивают Lua в PHP и, следовательно, предоставляют возможность разрешить доступ между PHP и Lua частью вашего приложения. Посмотри на:

    http://pecl.php.net/package/lua

    У этого также есть несколько приятных примеров:

    http://phplua.3uu.de/

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

    Как насчет выполнения сценариев на клиенте. Это обеспечит максимальную безопасность, а также сохранит ресурсы сервера.

    Другими словами, Javascript будет вашей платформой для написания сценариев. Что вы делаете, так это раскрытие функциональности вашего бэкэнд как функции javascript. В зависимости от того, как в настоящее время написано ваше приложение, которое может потребовать работы с бэкэнд или нет.

    О, и, кстати, вы не ограничены javascript для фактического языка. Google «скомпилировать в javascript» и первым ударом должен быть список языков, которые вы можете использовать.

    Безопасность, безопасность, безопасность! Просто хотел убрать это с дороги. То, что вы пытаетесь сделать, звучит довольно страшно, но это ваша нога, чтобы стрелять.

    Кроме того, что вы пытаетесь сделать, это смешивать два разных серверных языка, если не существует реализации Python, которая работает поверх PHP, о которой я не знаю (PHPython?).

    Если вы хотите, чтобы ваш PHP-код каким-то образом вызывал Python, вы можете сделать это довольно легко с помощью чего-то вроде eval () или exec (). Посмотрите, как вводить код python во время выполнения и выполнять его?

    Что касается упаковки ваших классов PHP, я не уверен, что вы можете это сделать точно. Вы можете отразить свои классы PHP классами Python и использовать что-то вроде JSON для переноса данных между ними.

    Я не знаю никаких готовых решений. Но pypy , реализация Python, написанная в RPython, имеет функцию песочницы , которая позволяет запускать ненадежный код.

    Но если некоторые очевидные DSL могут быть разработаны для вашего домена, это может быть проще.

    Вы можете сделать это без Python, т.е. разбор пользовательского ввода для заранее определенных «тегов» и возврат результата.

    У вас есть два варианта:

    1. Сделайте свою логику в PHP на интерфейсе с помощью MVC
    2. Отложить свою логику на бэкэнд

    Если вы выполняете свою логику в интерфейсе, вы можете посмотреть в инфраструктуру PHP5 MVC, такую ​​как Zend

    Если вы откладываете свою логику, вы можете использовать любой язык сценариев, который вам нравится. Например, вы можете использовать SQLAlchemy с Python для доступа к вашей базе данных.

    Python - лучший язык программирования в мире.