gpt4 book ai didi

php - JS和PHP复杂数据之间的桥梁

转载 作者:行者123 更新时间:2023-11-30 13:19:03 24 4
gpt4 key购买 nike

我需要构建一个复杂的控制面板。

它必须是用户配置的,在他进行了任意数量的更改后,他提交它们并显示新配置的报告。

现在有很多可能的配置选项,JS 必须能够绘制控制元素/用值初始化它们,PHP 必须执行业务逻辑——所有这些都基于给定的配置对象—— 在将对象传递给另一方之前,两者都必须能够更改选项的值。

现在显而易见的解决方案是在两侧都有预定义的配置对象:

PHP:

 class config {
public $anArray = array();
}

JS:

 {
anArray : []
}

双方可以通过json_encode$.parseJSON 进行流畅的交流。

但是,两个实体的结构必须匹配,我不知道如何确保这一点。有人对如何在这两种技术之间传递复杂的数据结构有任何想法吗?

编辑:澄清一下,我所说的结构是指两个对象的属性:对象本身是一个简单的配置包装器,因此它没有私有(private)属性、方法等,只有公共(public)字段标量或简单索引数组。

所以我想要一个以 DRY 方式开发它的解决方案:如果我想添加一个名为“paginationEnabled”的字段,它应该同时出现在 JS 和 PHP 对象中:

PHP:

 class config {
public $anArray = array();
public $paginationEnabled = true;
}

JS:

 {
anArray : [],
paginationEnabled : true
}

我可以在两侧分别实现它们,但它不会是 DRY(这在这种情况下很糟糕)而且我可以感觉到必须有一个解决方案,我只是想不出一个。

最佳答案

最简单的解决方案是在对服务器的每个请求以及服务器返回的每个页面中包含整个 JSON 编码的对象结构。无论如何这都是必要的,因为 PHP 和 JavaScript 都不会在页面加载之间持续存在(除非您使用的是 AJAX,这只会使 JavaScript 持续存在)。

当然,这只有在数据已经采用可以进行 JSON 编码的形式时才有效。 (数组和简单对象可以编码到任何深度,但非平凡类、文件句柄或函数的对象不能。)如果不是,那么您需要将其转换为一个,然后在另一端转换回 -例如,如果一个对象的类很重要,那么你首先需要确保另一边存在对应的类,然后你可以用 {class: $class, value: $value} 来指明想要的类名 - 并在另一端添加代码以找到该构造并重建所需类的对象。如果您需要复制函数,那么如果您将所有函数存储为 JavaScript,并在 PHP 中包含一个 JavaScript 解释器库,那么这可能是易于管理的。然而,这可能比它的值(value)更麻烦。

如果 JSON 对象太大而无法在每次请求时发送,那么您只能将其存储在数据库中(以适合数据库的形式)并在 JavaScript 端发生某些变化时使用 AJAX 更新数据库,或检索客户端代码尚未拥有的对象的任何部分。

关于php - JS和PHP复杂数据之间的桥梁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10953482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com