matryoshka-model / matryoshka
一个轻量级框架,提供了一种标准且简单的方式来实现模型服务层
Requires
- php: >=5.5
- zendframework/zend-eventmanager: ~2.4
- zendframework/zend-inputfilter: ~2.4
- zendframework/zend-paginator: ~2.4
- zendframework/zend-servicemanager: ~2.4
- zendframework/zend-stdlib: ~2.4
Requires (Dev)
- phpunit/phpunit: ~4.2
- satooshi/php-coveralls: dev-master
- zendframework/zend-form: ~2.4
- zendframework/zend-mvc: ~2.4
Suggests
- matryoshka-model/mongo-transactional: Perform transactional operations with MongoDB
- matryoshka-model/mongo-wrapper: MongoDB matryoshka wrapper
- matryoshka-model/rest-wrapper: Matryoshka wrapper aimed at creating restful API clients
- matryoshka-model/zf2-matryoshka-module: ZF2 module for matryoshka library
README
Matryoshka ----------Matryoshka 不是一个 ORM。
Matryoshka 是一个微框架(< 1000 SLOC),它帮助您以结构化的方式构建模型 服务层,无需使用复杂的 ORM 系统,避免了开销。Matryoshka 本身不提供持久层实现,也不需要适配器:您可以通过实现 criterias 来完全控制持久层。其分层设计旨在在持久层和应用程序的其他部分之间提供强大的分离,无论您需要使用哪种数据网关(例如,Zend\Db、MongoCollection、REST 客户端或任何其他东西)。为了简化您与常见持久系统的工作,已经提供了一组作为独立存储库的 wrappers。它们只是一组现成的类。Matryoshka 使用了几个 Zend Framework 2 组件,但不需要您使用 Zend Framework:您可以自由使用 Matryoshka 与任何框架一起使用。最后但同样重要的是,Matryoshka 的设计允许您只使用单个组件或所有组件进行协作。无论如何,您都可以决定如何设计自己的应用程序模型:只有您知道您的应用程序需要什么。
包装器
集成模块
其他
其他使用 Matryoshka 开发的插件、模块和附加组件。
社区
有关问题和支持,请访问 Slack 频道(在此 获取邀请)。
工作原理
Matryoshka 本身不提供持久层实现,但它可以与任何充当数据网关的第三方实现一起工作。无论您选择哪种数据网关,Matryoshka 都为客户端(即您的控制器)提供相同的一组实用 API。为了实现这一目标,Matryoshka 使用开发者必须实现的准则接口。
将准则视为一小段代码,告诉数据网关如何对您的数据集执行操作:例如,过滤一些行。因此,每个准则代表一个简单的任务:定义了不同类型的准则接口,用于写入、读取和删除操作。此外,在具体的准则类中,开发者可以添加方法以增强“查询接口”的领域特定逻辑。
具体的准则类既充当定义查询接口的准则,也充当模型层和数据网关之间的 调解者。只有准则类对数据网关接口执行操作,而 Matryoshka 的组件则不执行。
因此,Matryoska 对数据网关接口一无所知,这使得它可以与任何类型的第三方数据网关实现一起工作。
Matryoshka 玩偶(层)
-
ModelManager 专门的服务定位器,用于您的模型服务类(例如,模型)
-
模型 一种终端用户服务,通过使用标准(类似于表格网关或文档集合)来管理一组相关数据
-
标准 从API的角度看,是一个“用户查询界面”,也充当模型与数据网关之间的中介
最后,在内层玩偶的空白空间中,您可以放置
- 数据网关 任何类型的数据网关,如
Zend\Db\TableGateway
或\MongoCollection
或REST客户端
基本使用示例
//Assiming MyModel an instance of a Matryoshka Model class registered in Matryoshka model manager $myModel = $modelManager->get('MyModel'); //Assuming MyCriteria a class extending ReadableCriteriaInterface $criteria = new MyCriteria(); $criteria->setMyCustomFilter('foo'); //Execute a query $resultSet = $myModel->find($criteria);
安装
使用composer进行安装。
将以下内容添加到您的composer.json
文件中
"require": {
"matryoshka-model/matryoshka": "~0.8.0"
}
要求
- PHP >= 5.5