мини скриптовый язык поверх php - PullRequest
5 голосов
/ 11 мая 2011

Я ищу мини-язык сценариев, который работает на php, мне нужно интерпретировать простые формулы (то, что может сделать язык сценариев для электронной таблицы) Главное, что мне нужно, это переменные, условия аффекта и математические операции и оператор if.

например:

если (price1> 360) результат = (цена1 * Q) + цена1 * Q / 17 еще ...

Ответы [ 3 ]

2 голосов
/ 11 мая 2011

Я предлагаю вам взглянуть на некоторые концепции, используемые в системе шаблонов, такие как Smarty , и реализовать свою собственную. Например, математический шаблон позволяет вам выполнять такие операции:

{* $height=4, $width=5 *}
{math equation="x + y" x=$height y=$width}

Вы можете просто взять математические функции отсюда , если вы хотите получить общее руководство по их созданию. Существует риск возникновения проблем, поскольку для выполнения расчетов используется eval().

Кроме того, здесь есть класс для оценки RPN (обратной польской записи) для поддержки операторов: +, - , *, /, IF, THEN, SWAP, DUP, =, <>, >, <. >= и <=.

1 голос
/ 12 мая 2011

Вы можете использовать встроенный интерпретатор, например Javascript, например http://phpjs.berlios.de/, или переносить вызовы командной строки для обезьяны-паука.

1 голос
/ 12 мая 2011

Ну, вы также можете написать эти маленькие скрипты на PHP и выполнить их, используя eval .Но, поскольку это похоже на открытие ящика Пандоры, вы должны действительно знать, что можете доверять переданному коду, прежде чем рассматривать это как жизнеспособный вариант (т. Е. Это действительно опасно, особенно если эти формулы вводятся пользователями - я бы1003 * никогда используйте их, когда пользователи предоставляют код для выполнения).

Другой вариант (возможно, более безопасный) - использование какой-либо формы интерпретатора JavaScript для выполнения фрагментов кода.Мне известно о 2 PHP-проектах, которые могут оказаться полезными (даже если они находятся в спящем режиме): j4p5 и phpjs .Если вы можете установить расширения, то PECL с SpiderMonkey может быть лучшим вариантом.

...