我正在使用 Codeignitor 2.x 并且我最初使用控制器作为模块(尽管不完全是 HMVC),因为我有一个可以调用其他较低级别控制器的顶级控制器。我的想法是,因为这些较低级别的控制器仍在与视图交互,所以它们应该仍然是控制器而不是模型或驱动程序。
然而,我发现控制器的每个实例也会产生一个新的 CI 实例。所以我会为每个请求运行 3 或 4 个 CI 实例。大量的开销,也导致了会话问题。
此后,我将这些较低级别的控制器作为驱动程序移入库中。他们现在在构造方法中捕获 CI 实例,并对其进行修改。这使它非常好用,并且不需要 HMVC 扩展。驱动程序也不能从外部调用,因此它允许我通过特定入口点汇集所有请求。
我的问题是这在结构上是否正确。 我一直认为驱动程序应该只修改通过方法调用提供的数据,但是这些驱动程序中的许多会直接从 GET 和 POST 中提取信息,虽然它们不会直接附加到视图,但它们经常访问查看文件,并将处理后的视图传递给 CI 实例进行输出。
[编辑]更多上下文: 我创建的驱动程序之一本质上是一个名为“Access”的用户登录驱动程序。它为创建/登录/注销方法调用“用户”模型。驱动程序使用 POST 数据来检查用户模型,然后加载带有错误的正确视图以及所需的任何内容。这个想法是,有 2 行,我可以在整个项目的任何控制器中包含这个驱动程序,因此代码冗余显着减少。同样,我知道驱动程序应该被限制在它们的范围内,但是驱动程序不会修改其范围之外的任何内容,而只是返回它创建的视图。
是否有另一种更符合直接 MVC 的方法来执行此操作?