如何在 CI 中的两个应用程序之间共享控制器和模型


How to share controller and model between two applications in CI?

我正在使用CodeIgniter 2.1.1并使用两个环境(生产和测试)构建网站。本质上,在开始时,两个环境具有相同的程序逻辑。但是现在要进行一些修改。

这个想法是共享生产环境和测试环境的控制器和模型,但对这两种环境有不同的视图。

我已经设置了WAMP,在WWW目录中有两个单独的文件夹:一个用于测试,另一个用于生产。每个文件夹下都有控制器,模型,视图等。CI 正确指向并设置基本 URL。

我的问题是,当我在Web浏览器中键入URL以调用测试环境的控制器时,它应该重定向并调用生产环境的控制器。这可能吗?

不要让它重定向。让它包含该文件。

假设您有以下文件结构:

www-root
 |-production
 |   |-application
 |   |   |-controllers
 |   |   |-etc.
 |   |-etc.
 |
 |-test
 |   |-application
 |   |   |-controllers
 |   |   |-etc.
 |   |-etc.
 |

在两种环境中创建名称完全相同的文件。对于我们的例子,我们会说controller.php。在生产环境中,进行编码。在测试环境中,请包含此行,并且仅包含此行:

<?php include '../../../production/application/controllers/controller.php';

这应该将文件从生产环境拉取到测试环境中。只需确保对任何链接进行硬编码,使它们相对而不是绝对。这样,当它被拉入您的测试环境时,它将引用您的测试资产,而不是您的生产资产。

这是未经测试的,因为我现在无法访问我的 CI 安装。让我知道结果如何。

我建议你最终设置某种类型的版本控制,例如Git。 您可以在测试中编辑环境并将更改推送到生产环境。

要回答您的问题,您可以通过设置符号链接在两个不同的应用程序之间共享模型和控制器。 我已经在Linux中完成了,但在Windows中应该是一样的。 因此,假设您希望实际文件位于测试应用中。 将所有 php 文件放在测试应用的控制器和模型目录中。 无需在生产应用中创建控制器和模型目录,只需创建指向测试应用相应目录的符号链接即可。