My个人常用分层总结录
按功能分:
services 一般做商业接口 比如支付宝等 微信api接口 其他第三方接口 比如短信等 与controller 和 数据库model层 或者 dao层 通信
DAO 顾名思义 于数据库层交互
Model 框架可能自带的那种 就是做表的映射 然后模型的自动生成一些属性 快速开发
entity 独立层 如果加后缀 比如Request 就是独立的请求层 (这里可以做校验参数)类似于下文的 Form 但比Form更全 这里也可以是Repository层
与Dao或model 交互 和 controller 控制 交互
Package (lib) 共用层(优化向)
Controller C层 控制器入口
View 层 现代web前端分离 交由前端
常用模块:
APi 模块 api接口模块 (区分层的概念)
api模块里简单分类 可以是 请求别人的接口 和 配置本身服务对外接口
和services 交互 与 Dao 或 Logic交互
WWW 默认模块 (区分层的概念)
一个好的设计分层
Presenter
Repository
Form
Service
Package
#1 Presenter
把日期、金額、名稱之類的呈現(presentation)邏輯抽離出來!
#2 Repository
把查詢(query)的邏輯,也就是取得entity的各種方式抽離出來!
#3 Form
把參數驗證(validation)的邏輯(例如字串長度、日期、金額大小)抽離出來!
#4 Service
把施加在多種entity上
或是
複雜的商業行為
抽離出來!
#5 Package
把其他公司也能使用、概念上獨立於當前專案的程式碼抽離出來!
方法一:照Domain分
/views
/controllers
/MyApp
/Article
/Article.php
/Presenter.php
/Repository.php
/Form.php
/User
/User.php
/Presenter.php
/Repository.php
/Form.php
/Order
// ...
/Service
/FirstService.php
/SecondService.php
/GithubName
/CoolPackageOne
/CoolPackageTwo
/CoolPackageThree
方法二:照功能分
/views
/controllers
/MyApp
/Entities
/Article.php
/User.php
/Presenters
/Article.php
/User.php
/Repositories
/Article.php
/User.php
/Forms
/Article.php
/User.php
// ...
/Service
/FirstService.php
/SecondService.php
/GithubName
/CoolPackageOne
/CoolPackageTwo
/CoolPackageThree
方法三? 其他
取用的邏輯可以封裝成repository。
我會建User資料夾,裡面放UserEntity.php和
UserRepository.php。
我不把這種查詢的行為視為business logic(這一包不是service的概念)。
http://blog.turn.tw/?p=2290 参考文献
Laravel的
/resources
/views
/lang
/assets
/app
/Commands
/Console
/Events
/Exceptions
/Handlers
/Http
/Providers
/Services
/Https
/Controllers
/Middleware
/Requests
本文转载无需和我联系,但请注明来自记录你我https://recwe.com
最新评论