大型项目该如何分层架构
服务,发送电子邮件等,所以很多开发者就将业务逻辑封装到控制器里,当控制器庞大到一定规模,它们将会需要复用其他控制器中的业务逻辑。大部分开发人员并没有将这些业务逻辑提取到另外的类里面,而是错误的以为需要在控制器里面调用其他的控制器方法。这种模式通常被称为「HMVC」。遗憾的是,这种模式通常也意味着糟糕的程序设计,以及控制器太过复杂。 HMVC 意味着糟糕的设计:你觉得需要在控制器里面调用其他的控制器?这通常意味着糟糕的程序设计,以及你的控制器里面包含了过多的业务逻辑。好的做法是把控制器中的业务逻辑提取出来,放到一个新的第三方类里面,通常,我们将这种第三方类称之为服务类,这样你就可以在所有其他控制器里面注入服务类并使用它们了。 有一种更好的方式来构建应用程序结构。但首先我们要忘掉以往我们被灌输的关于「模型」的一切。干脆点,让我们直接删掉模型目录,重新开始吧! 再见,模型 删掉你的 models 目录了吗?还没删就赶紧删了!我们将要在 app 目录下创建一个新的目录,目录名就以我们这个应用的名字来命名,比如 QuickBill。我们将继续使用在前面章节中编写的那些接口和类。 >注意使用场景:记住,如果你在构建一个很小的 Laravel 应用,那在models 目录下写几个 Eloquent 模型其实挺合适的。但在本章节,我们主要关注如何开发适用于分层架构的大型复杂项目。
所以,我们现在有了个 app/QuickBill 目录,它和应用目录下的其他目录如 Http 还有 Console 都是平级的。在 QuickBill 目录下我们还可以创建几个其他目录,例如 Repositories 和 Billing 目录。目录都创建好以后,别忘了在 composer.json 文件里通过 PSR-4 自动载入机制将它们注册到 QuickBill 命名空间下: (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |