我正在设计一个新的应用程序并计划使用Cake
PHP 3.通常在
PHP MVC框架(CakePHP,CodeIgniter)之上设计一个应用程序时,我已经实现了一组单独的代表业务层或服务层的类(取决于什么你喜欢用的词).因此,堆栈:
– 意见
– 控制器[实际上只是另一部分意见;来自C#土地的代码隐藏]
– 业务层面[业务逻辑所在,因为业务逻辑跨越多个域对象,不适用于单个模型/ DAO]
– 模型[aka数据访问对象]
…与层之间的域对象(现在在Cake PHP 3中的“实体”)遍历.
我看到Cake PHP 3在默认架构中仍然缺乏业务层的任何概念,这是令人失望但几乎不可逾越的.但毕竟,我的问题实际上是行人.它是:我在哪里放置MyBusinessLayer.PHP?在蛋糕PHP 2我会把它放在app / Lib,并加载它
App::Import('Lib','MyBusinessLayer');
CakePHP 3中的等效内容是什么,如何加载?我意识到我可以坚持任何旧的地方和require_once(),但我想知道是否有一种与Cake PHP标准更一致的方法.这个问题可以很容易地应用于十线实用程序类,但在我的情况下它适用于业务层.
您的业务层可以放在src目录下的任何地方.例如,您可以使用一个名为src / core或src / myBusiness的文件夹,或者您可以有多个文件夹,如src / command src / Handler,这取决于您如何构建应用程序,而不是提供Web请求或访问数据在数据库中.
如果给定正确的命名空间,放置在src内的任何文件夹中的类将被自动加载.
// in src/MyBusiness/BusinessRules.PHP namespace App\MyBusiness; class BusinessRules { ... }
您可以从另一个使用use关键字自动加载此类:
// In another file use App\MyBusiness\BusinessRules; ... $rules = new BusinessRules();
对于这种类型的对象,CakePHP并没有为您做出假设,因为它们通常对应用程序非常具体.它提供了各种工具,可以帮助您更快速地构建更好的架构,并减少代码.例如使用面向面向编程的事件系统,用于创建适应性实现的配置特征或使用功能方法处理数据的集合库.