carlosv2 / funnel
小型测试仓库增强器
1.1.3
2017-02-10 22:54 UTC
Requires
- php: ~5.3 || ~7.0
- carlosv2/communism: ^1.2.2
- everzet/persisted-objects: ^1.0
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-14 19:47:50 UTC
README
小型测试仓库增强器。
此项目旨在为everzet/persisted-objects提供快速便捷的过滤功能。
用法
您只需用carlosV2\Funnel\Funnel装饰测试仓库。例如
use carlosV2\Funnel\Funnel; use Everzet\PersistedObjects\Repository; class MyTestingRepository { /** * @var Funnel */ private $repository; /** * @param Repository $repository */ public function __construct(Repository $repository) { $this->repository = new Funnel($repository); } // ... }
Funnel还实现了Everzet\PersistedObjects\Repository,因此您不会失去任何功能,反而会获得更多功能。
- findAll(): 返回包含所有对象的数组。这是getAll的别名。
- findBy(callable): 返回包含所有匹配对象的数组。如果没有找到,则返回空数组。
- findOneBy(callable): 返回第一个匹配的对象或如果没有找到,则返回null。
- countBy(callable): 返回表示匹配对象数量的整数。
例如
$objects = $funnel->findBy(function ($object) { return $object->getData() === 'foo'; });
此外,Funnel提供了一些通用的过滤器,可用于加速开发。
这些过滤器可以通过应用以下规则(其中"非"是可选的)组合成新的方法
find |
findOne > + By + [Not] + Filter
count |
例如
- findByProperty(...): 查找具有给定属性和值的所有对象。
- findOneByMethod(...): 查找第一个匹配给定方法和值的对象。
- countByNotType(...): 计算所有没有给定类型的对象。
如果提供的过滤器中没有符合您要求的内容,您还可以向Funnel添加自己的过滤器,以便在组合新方法时使用。
请随意提交包含您自己的通用过滤器的pull request! :)
或者,您可以装饰一个数组,以便在其上方提供Funnel API。例如
$myArray = [$obj1, $obj2, $obj3]; // Any Funnel-compatible method can be used here Funnel($myArray)->countByType(\DateTime::class);
安装
打开命令行控制台,进入您的项目目录,并执行以下命令以下载此项目的最新稳定版本
$ composer require carlosv2/funnel
此命令要求您全局安装了Composer,如Composer文档的安装章节中所述。