我见过很多关于整合ZF和Doctrine的文章。 ZF here也提出了一项建议,但它们总是有两种可能的结构。他们将所有模型放在一个顶级模型目录中,或者将它们放入模块相关的模型目录中。
application |-- Bootstrap.php |-- configs |-- controllers |-- models - EITHER HERE |-- modules | -- examplemodule | |-- controllers | |-- models - OR HERE | |-- views |-- views
对于我们的项目,我发现两个选项中的任何一个都存在问题:
的 1。一个目录:应用程序/模型 - 在一个复杂的系统中,在短时间内会有数百个文件,当你有两个表类时(例如User.php和UserTable.php)。
的 2。基于模块的模型目录: application / modules / examplemodule / models - 在许多情况下,我们同时使用多个模块中的模型。所以“用户”是必需的,例如在模块“游戏”,“管理”,......
有没有办法在顶级目录“models”下使用某种子目录来获得一些分组。它应完全独立于模块结构。
application |-- Bootstrap.php ... |-- models | -- user | |-- User.php | |-- Friend.php | |-- other user related models | -- game | |-- Game.php | |-- Score.php | |-- ... ...
任何解决方案都应支持自动加载和yaml文件生成类。
任何想法,链接或解决方案?谢谢!
答案 0 :(得分:1)
我们正在为我现在工作的公司制定解决方案。
我们目前正在遵循Zend模块化目录结构,我们在每个模块目录中都有我们的模型文件夹,其基本目录如下:
|----application
|--------modules
|------------content
|----------------models
|--------------------Base
|------------------------Content.php
|--------------------Content.php
我们的模型是自动加载的,但我们还没有将代码生成集成到zf cli中,因此我们当前生成模型,然后手动将它们复制到模块目录中。
抱歉,我没有您需要的确切答案,但您可能也对Zend社区中的proposal感兴趣。
答案 1 :(得分:1)
我没有尝试过,但也许这可以解决部分问题 http://www.doctrine-project.org/documentation/manual/1_2/en/yaml-schema-files#features-examples:packages:package-custom-path
答案 2 :(得分:0)
我把我放在一个目录里。俗话说,开发人员时间昂贵,CPU时间便宜,因此针对开发人员进行了优化。还有,KISS和YAGNI。在需要优化之前不要进行优化。在那之前,信任自动装载机。
对于它的价值,我使用它的网站相当繁忙,性能从来都不是问题。
答案 3 :(得分:0)
用户模型不会属于用户模块吗?并且游戏模块不应该更有可能使用某种接口来连接用户模型吗?
不是直接在游戏模块中使用用户模型,而是通过配置将用户适配器传递给游戏模块?
毕竟,对于我来说,当模块不可互换时,它们就没有意义了。