为不同的客户

时间:2016-12-29 14:47:02

标签: php linux web-applications yii2

我正在努力想出一个基于每个客户可以配置相当标准的基于Web的应用程序的策略,因此我们可以多次销售它,而无需为每个客户编写额外的代码。这是一个LAMP堆栈(其中P是带有yii2的php)

我最初的想法是为每个客户提供一个JSON / YAML文件,并根据其中的内容打开/关闭功能。类似{hasAmazonApi:0,hasEbayApi:1}等等。

问题当然是代码中有很多if / else。

我的老板建议配置文件可用于实际控制部署时在服务器上部署的代码,编写脚本来编写代码 - 但这似乎充满了困难和危险。

这两种解决方案都不完美 - 有任何建议吗?

2 个答案:

答案 0 :(得分:1)

我们主要通过两种方式解决这个问题:

  1. 我们使用一个数据库(一个代码库)创建一个应用程序,并通过具有自定义规则的RBAC系统将所有用户分开(即,用户应属于该组织以控制此项目)。在您的情况下:用户应该购买此模块以使用它。
  2. 我们使用一个代码库创建一个应用程序。但每个客户都有自己的数据库。因此用户只能在自己的数据库中查看数据(他永远不能“切换”到另一个数据库)。
  3. 当然还有其他方法。根据您的需求和您期望的角色数量,您可以选择一个对您感觉良好的角色。

答案 1 :(得分:0)

确实没有正确或错误的答案,但您的第一个选项可能更可取,只要您完全可以访问部署代码的位置,并且客户无权更改配置并选择加入他们的内容没有付钱。

警惕做部分部署是正确的。如果应用程序全部集成在一起并且配置决定了用户可以做什么,那么开发和测试应用程序会容易得多。您可能会遇到难以理解的问题,并且可能无法有效地重用代码。

如果功能可以分成这样的模块,Yii2模块可以适用于后一种方法。由于上述原因,我只会这样做作为最后的手段。从您的示例中可以看出,在任何情况下都是不可能的(eBay / Amazon凭证输入可能在同一个模块中,并且在UI中彼此并排)。