大型项目该如何分层架构,该和MVC说再见了
举个例子,与其在营业逻辑类内里直接获取 Web 哀求,不如把 Web 哀求通过节制器转达给营业逻辑类。这个简朴的窜改会将你的营业逻辑类和「Web」层解耦,而且不必担忧怎么去模仿 Web 哀求,就可以轻松测试营业逻辑类:
此刻 chargeAccount 要领更轻易测试了,因为我们不再必要在 BillerInterface 实现类中行使 User 和 Request 类,只需将用户和金额转达到该要领即可。 编写可维护性应用措施的要害之一,就是职责疏散。要时常搜查一个类是否管得太宽,知道一些它不应知道的。你要经常问本身「这个类是否必要体谅X?」假如谜底是否认的,那么就要把这块逻辑提取出来放到另一个类内里,然后用依靠注入的方法将其注入进来。 怎样判定一个类是否管得太宽?一个有效的要领就是搜查你为什么要改这块代码。举个例子,当我们想调解关照逻辑的时辰,是否必要修改 Biller 的实当代码?虽然不必要,Biller 实现只存眷付出,它与关照逻辑该当仅通过左券来举办交互。在处理赏罚代码时行使这种思绪,可以辅佐你快速找出应用中必要改造的处所。 对象都放哪儿? 当通过 Laravel 开拓应用时,你也许会狐疑于应该把各类「对象」放在那边。譬喻,帮助函数要放在那边?变乱监听器要放在那边?视图组件要放在那边?谜底也许出乎你的料想 —— 「任意,放哪儿都行!」Laravel 并没有许多关于这方面的文件体系上的约定。不外,这个谜底简直不能让人满足,以是下面我们就这个题目睁开接头,一路切磋这些「对象」毕竟可以放在那边。 帮助函数 我们可以在 app 目次下建设一个 helpers.php 文件,然后将自界说的帮助函数都放到这个文件中。虽然,因为这个文件内里包括的不是类,不得当通过定名空间引用个中的函数,必要在 composer.json 中全局注册它:
然后运行 composer dump-auto 从头注册自动加载映射相关。然后就可以在应用中行使 app/helpers.php 中界说的帮助函数了。 变乱监听器 变乱监听器虽然不应放到 routes.php 文件内里,以是我们要找其它的处所来存放。究竟上,在 Laravel 5.* 中,当我们通过 php artisan make:listener 呼吁建设时刻监听器时,体系会自动在 app 目次下建设 Listeners 子目次,并将天生的监听器类放到该目次下。以是我们对付自界说的变乱监听器类,放到该目次下即可。 错误处理赏罚器 在 Laravel 5.* 版本中,默认环境下全部的非常都是通过 AppExceptionsHandler 来处理赏罚的,你也可以通过自界说的非常类来处理赏罚,自界说非常类可以放到 app/Exceptions 目次下。 其他 凡是,只要遵循 PSR-4 类型就可以在应用目次布局中保持类的整齐。团结你今朝为止进修到的常识,对付什么代码要放在什么处所这个题目,该当可以给出一个有理有据的谜底了。但永久不要拒绝试验。Laravel 的美好之处就是你可以做出最得当你本身应用的约定。去试探和发明最得当你本身应用的布局吧,别忘了和他人分享你的看法! 譬喻,你也许受到我们之前例子的开导,在 QuickBill 中建设一个 Providers 目次来存放全部你自界说的处事提供者,目次布局相同这样:
留意上面的例子,我们有 Providers 和 Extensions 两个定名空间。全部你自界说的处事提供者都可以放到 Providers 定名空间下,而 Extensions 定名空间可以用来存放你对框架焦点举办扩展的类。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |