我必须使用Codeigniter和Doctrine创建一个php项目。 我在j2ee上工作很多,我想在我的php项目中使用相同的项目结构。
所以这就是我的想法:
我没有看到在php项目接口中实现服务,并且总是缺少dao设计模式。在php mvc项目中,接口和DAO是多余的吗?
另一个问题:据我所知,Codeigniter使用以下语法加载模型: $这 - >负载>模型( 'UserServiceImpl');在我看来这有点蹩脚,我更喜欢使用带名称空间的自动加载器,这是不是很糟糕?
答案 0 :(得分:1)
我用CodeIgniter设计了一些较小的系统,现在我正在设计/构建一个大系统。我总是遵循相同的结构(我将在这里描述的那个),到目前为止它对我很有用。对于我目前的项目,我们尝试使用Doctrine作为ORM,但最终我决定将其从项目中删除 - 这更多的是负担而不是帮助。
(我可能会对图层使用稍微不同的术语,但我尽量将它们与您的术语并列。)
我使用的结构是:
职责:
包含类的所有文件包含每个文件一个类,名称与文件名相同(按照http://www.php-fig.org/psr/0/)但我不使用名称空间因为我发现很难使它与CodeIgniter一起使用不要使用它们。
您可以在自动加载器中加载模型,尤其是在您处理中小型项目时,性能并不重要。在这些情况下,我总是使用自动加载器加载我的所有模型。但是,在更大的项目中,更有必要在自动加载器中加载广泛使用的模型,在控制器构造函数中加载更具体的模型,或者甚至在操作中加载更具体的模型。