我正在设计一个新的应用程序并计划使用CakePHP 3.通常在PHP MVC框架(CakePHP,CodeIgniter)之上设计应用程序时,我实现了一组代表业务层或服务层的独立类(取决于什么你喜欢用的词).因此,堆栈:
- 意见
- 控制器[实际上只是视图的另一部分; 来自C#land的代码隐藏]
- 业务层[业务逻辑所在的位置,因为业务逻辑跨越多个域对象,不适合单个Model/DAO]
- 模型[又名数据访问对象]
...使用域对象(现在是Cake PHP 3中的"实体")在层之间遍历.
我发现Cake PHP 3在默认架构中仍缺乏业务层的任何概念,这令人失望,但几乎无法克服.但毕竟,我的问题实际上是行人.它是:我在哪里放MyBusinessLayer.php?在Cake PHP 2中,我会把它放在app/Lib中,并加载它
App::Import('Lib', 'MyBusinessLayer');
CakePHP 3中的等价物是什么,我该如何加载它?我意识到我可以坚持任何旧的地方和require_once(),但我想知道是否有一种方式更符合Cake PHP标准. 这个问题可以很容易地应用于十行实用程序类,但在我的情况下,它适用于业务层.
我正在开发一个iPhone应用程序,它将在运行时构造一个NSMutableDictionary,其值(键值对)将是NSMutableArrays.作为Objective-C的新手,我担心以下会导致内存泄漏:
- (void) addNewSupplierPhoto:(UIImage*)image toSupplierID:(NSInteger*) supplierID{
NSMutableArray* supplierPhotoArray = [supplierPhotos objectForKey:supplierID];
if(supplierPhotoArray == nil)
{
supplierPhotoArray = [[NSMutableArray alloc] init];
[supplierPhotos setObject:supplierPhotoArray forKey:supplierID];
[supplierPhotoArray release];
}
}
Run Code Online (Sandbox Code Playgroud)
supplierPhotos是一个NSMutableDictionary,它是包含类的成员变量.
如您所见,当我接受新的UIImage*放入结构时,我首先检查对应于第二个参数(supplierID)的键值对的对象是否为nil.如果它是nil,我分配一个新的NSMutableArray并将其设置为该键的对象,然后释放它.假设我在包含此方法的类的dealloc中释放NSMutableDictionary,是否会释放引用?在释放NSMutableDictionary之前,我是否需要运行它并释放包含在其中的各个NSMutableArrays?
谢谢,
本B.