Php 动态构建约束逻辑处理器

Php 动态构建约束逻辑处理器,php,mysql,Php,Mysql,这可能更多的是一个讨论或假设性的问题,但接下来 是否有人知道任何现有的可用源(理想情况下使用jQuery)来构建逻辑块,普通Joe可以使用这些逻辑块来创建流程。基本上我想的是,你可以把所有的构建块放在一起,然后选择所需的操作和结果,如果这个块是真的。例如: [IF] {ACTION_A} [AND] {ACTION_2} [THEN] (RESULT_1) [IF] {ACTION_B} [OR] {ACTION_A} [THEN] (RESULT_2) 其中,花括号之前在PHP中定义,可以

这可能更多的是一个讨论或假设性的问题,但接下来

是否有人知道任何现有的可用源(理想情况下使用jQuery)来构建逻辑块,普通Joe可以使用这些逻辑块来创建流程。基本上我想的是,你可以把所有的构建块放在一起,然后选择所需的操作和结果,如果这个块是真的。例如:

[IF] {ACTION_A} [AND] {ACTION_2} [THEN] (RESULT_1)

[IF] {ACTION_B} [OR] {ACTION_A} [THEN] (RESULT_2)
其中,花括号之前在PHP中定义,可以(可能)从下拉列表中选择。也许我在这里看到了一些东西:这就是我想要的,尽管我并不真的想重新发明轮子

我还需要在MySQL中存储所有内容,尽管[IF]块可能只有一个项目,但也可能有几个项目。如果我必须从头开始,我不确定存储多个项目然后将它们粘在一起形成一个条件语句的最佳方式

我希望在这里得到一些灵感,如果不是的话,一个我不需要重新发明的地方

更新

例如,一个动作块可能是DAY,因此逻辑块/选择菜单如下:

[IF] {DAY} [EQUALS] 'wednesday' [THEN] (message = 'it is midweek!')
或许:

[IF] {DAY} [EQUALS] 'friday' [THEN] (message = 'the weekend is almost here!')
所有的用户条目都将被完全检查,并且非常有限,因此不会发生注入

更新2

这是我刚刚发现的另一个例子,与此类似,但不是SQL-但与数据库无关,只是我将定义的设置操作的条件

更新3


根据这篇文章,Magento也有类似的功能:(虽然这是去年8月)

这在一定程度上取决于术语“逻辑构建器”的含义。如果您只想提供构造一系列If-then-else条件的能力,其中每个条件调用一个或多个预定义函数,然后,您可以通过XML(以及其他方法)轻松实现这一点

您可能有一个表行,其中每一行的外观如下:

Cell 1:  IF
Cell 2:  [dropown containing list of functions] [dropdown containing possible values]
Cell 3:  THEN [dropown containing list of functions] [dropdown containing possible values]
Cell 4:  ELSE [dropown containing list of functions] [dropdown containing possible values]
并提供一个按钮来复制行并指定新的if-then-else子句

另一方面,如果您希望为用户提供更完整的逻辑构建器——例如,如果您希望用户也能够构造每个条件调用的函数,而不是提供预定义的列表——那么您将看到一个完全不同的问题


if-then-else子句易于以WYSIWYG格式指定的原因是,只有此类条件(且没有while循环)的语言只能对整个可计算函数类的严格子集建模;i、 这类语言不是图灵完备的。如果您希望提供一个完全图灵完整的逻辑构建器,那么,我认为目前这将是一个相当大的任务。

您在这里想要实现什么?允许用户将自己的PHP注入服务器听起来像是个坏消息。它位于管理区域内的一个受保护区域内——就已经定义的操作而言,它也是非常封闭的。只希望所选用户定义后端PHP如何根据当前条件处理任务。如果你愿意,这是编程,但我想更多的是通过拖放块来生成代码(而不是让它们实际进行任何编码)。另外,不允许输入任何PHP—只允许输入文本—任何PHP代码或MySQL或HTML都是无效的(因为会进行检查)这是我的想法——我承认“逻辑构建器”不是描述它的最佳方式(但我想不出一种方式)。XML是实现这一点的最佳方式吗(与PHP相反)?您认为我应该以什么方式编写此文档(我对XML不太熟悉,但可以了解/研究更多)。您可以在客户端构建XML,然后将其发送到服务器端进行解析和执行。解析表行以构造XML(模式可能非常简单),然后在PHP中读取并执行该模式。(我并不真正使用PHP,但我认为PHP的动态变量在这里可能会派上用场。)