在MVC中,你把自定义类放在哪里


In MVC where do you put a custom class?

假设您需要创建一个将由控制器使用的自定义类。

class mycontroller extends main_controller
{
    public function __construct ()
    {
        $c = new my_custom_class();
    }
}

my_custom_class不是一个模型/视图/控制器,它是一个独立的类。将my_custom_class.php的文件放在哪里(哪个文件夹)的最佳做法是什么?它应该简单地放在任意文件夹(即/custom_classes/)中,还是在使用MVC时有最佳实践?

这取决于这些"自定义类"的实际用途。在最近的一个项目中,我的目录结构如下:https://i.stack.imgur.com/YGVI9.png

由控制器交互的自定义类通常是各种服务,并位于/src/model/services目录中。

我还有两个基础设施级别类的位置(比如各种工厂/构建器和一些数据结构的抽象类)。这些最终在/src/components
或CCD_ 6目录。

您在自己的项目中看到的可能是"代码气味"模拟,但对于应用程序架构而言。这可能是一个迹象,表明您一直在控制器中推动应用程序逻辑,而它不应该在控制器中。