Php CodeIgniter项目结构
我必须使用Codeigniter和Doctrine创建一个php项目。 我经常使用j2ee,我希望在我的php项目中使用相同的项目结构 这就是我的想法:Php CodeIgniter项目结构,php,codeigniter,doctrine,Php,Codeigniter,Doctrine,我必须使用Codeigniter和Doctrine创建一个php项目。 我经常使用j2ee,我希望在我的php项目中使用相同的项目结构 这就是我的想法: 控制器例如(用户控制器) 服务aka模型接口(用户服务) 服务实现,例如(UserServiceImpl实现UserService) Dao接口(UserDao) Dao接口实现,例如(DoctrineUserDao) 实体主义 观点 我还没有看到在php项目中实现服务接口,dao设计模式总是缺失。在php mvc项目中,接口和DAO是冗余的吗
$this->load->model('userserviceinpl');在我看来,这有点蹩脚,我更喜欢使用带有名称空间的autoloader,这是不是很糟糕?我已经用CodeIgniter设计了一些较小的系统,现在我正在设计/构建一个较大的系统。我一直遵循相同的结构(我将在这里描述的结构),到目前为止,它对我非常有效。在我当前的项目中,我们尝试使用条令作为ORM,但最终我决定将其从项目中删除-这与其说是帮助,不如说是负担 (我可能会对图层使用稍微不同的术语,但我尽量将它们与您的术语平行放置。) 我使用的结构是:
- (2) 数据映射器层包含所有SQL和所有条令EntityManager用法。它存储和检索域对象
- (3) 域对象表示实体(使用Docblock注释格式,在comments for Doctrine中描述了实体元数据)
- (1) 控制器只执行调用ORM层的逻辑,可能执行一些数据或计算的重组
- (4) 布局层帮助我将页面的准静态框架与更动态的内容分离开来。看看你是否喜欢这个主意
- (5) 模板基本上是带有一些PHP代码段的HTML
您可以在autoloader中加载您的模型,尤其是当您从事中小型项目且性能不重要时。在这种情况下,我总是用自动加载器加载我的所有模型。但是,在更大的项目中,在autoloader中加载广泛使用的模型,在controller构造函数中加载更具体的模型,甚至在actions中加载更具体的模型更值得。没有人能帮我解决这个问题吗?