在MVC系统中,我将不属于MVC的类放在哪里?

时间:2017-10-16 21:28:27

标签: php directory-structure

例如:我有一个会话类,一个消息类,一个CRUD类,我把它们放在哪个文件夹中?

我的文件夹结构是:

app/    <-- MVC logic
config/ <-- config files
core/   <-- core files of aplication, such as init
public/ <-- index and assets
vendor/ <-- for composer packages

2 个答案:

答案 0 :(得分:0)

什么是“核心”和“初始化”?你是否了解过像MVI一样的MVC或其他什么东西?

“crud classes”(实际应该是data mappers)是模型层的一部分,同样适用于domain objects,存储库,服务和其他cod,严格用于实现域业务逻辑。

.. emm ...“会话类”应该在供应商中进行,因为已经有许多会话抽象实现可用。我不知道应该是什么“消息类”,但如果你的意思是“请求”和“响应”,那么那些也应该进入供应商。我建议为这些功能安装Symfony的HttpFoundation独立组件。

答案 1 :(得分:0)

我建议将Standard PHP package skeleton作为一个良好的根级目录结构。

config/              # Configuration files
docs/                # Documentation and examples
public/              # Web server files (and front controller)
resources/           # Other resource files (assets, locales, migrations)   
src/                 # PHP source code  (The App namespace)
tests/               # Test code    

扩展版本:

vendor/              # Reserved for composer (don't touch this folder)
tmp/                 # Temporary files
tmp/cache/           # Cache files
tmp/logs/            # Log files

MVC目录结构(示例):

templates/           # Templates (HTML, Twig files)
src/Controller/      # Controllers and actions
src/Repository/      # Repositories (Communication with the database)
src/Table/           # The Table Gateway (Represents a table)
src/Entity/          # Entities (Represents a table row)
src/Service/         # Business logic
src/Utility/         # Helper classes

我认为您的Session类是HTTP会话库,Message类是验证类(或库)。因此,应通过composer将其安装到vendor/文件夹中。

它认为你的&#34; CRUD&#34; class是某种&#34; Data Table Pattern&#34;或DAO或Repository,可以是外部库vendor/和特定于应用程序的代码src/的组合。