pragmarx / colection
Laravel Illuminate 集合对象化属性
v0.8.1
2022-09-07 10:32 UTC
Requires
- php: >=7.0
- pragmarx/ia-arr: ~5.0|~6.0|~7.0
- pragmarx/ia-collection: ~5.0|~6.0|~7.0
- pragmarx/ia-str: ~5.0|~6.0|~7.0
Requires (Dev)
- mockery/mockery: ~1.0
- phpunit/php-timer: ~1.0|~2.0
- phpunit/phpunit: ~6.0|~7.0|~8.0|~9.0
- squizlabs/php_codesniffer: ^2.3
README
将集合项作为对象属性访问
Coollection 是 Laravel 的 Illuminate\Collection 重新打包,以便所有属性都是对象
$collection->name $collection->addresses->first()->street_name $collection->flatten()->cars->filter(function($car) { return $car->name == 'ferrari' })->last()->model $countries->where('name.common', 'United States')->first()->currency->name->english;
Tightenco\Collect
为了实现无依赖性,同时允许其在 Laravel 应用程序中使用,此包扩展了由 Tightenco\Collect 开发的功能,由 Matt Stauffer 从 Tighten。
为什么?
用一个问题来回答:哪一个更容易看?
collect( collect( collect( collect( $collection['cars'] )->unique('constructor')['models'] )->last()['model'] )['colors'] )->first()['rgb']
或者
$collection->cars->unique('constructor')->last()->model->colors->first()->rgb
这难道不是更容易看吗?
collect($vimeo)->body->data->first()->metadata->connections->likes->total;
或者你喜欢这个?
collect($vimeo)['body']['data'][0]['metadata']['connections']['likes']['total'];
与 Laravel 请求一起使用时,如果您收到
{"pagination":{"perPage":100,"pageNumber":1}}
您 collect()
它
$input = coollect($request->all());
然后您可以
$input->pagination->perPage
而不是
$input->get('pagination')['perPage']
您还可以使用“点符号”来获取您的项目
$input->get('pagination.perPage')
PHP 不可知
这是一个不可知的 PHP 包,是 Illuminate\Support\Collection 的提取,包含所有必需的类、接口和特性。因此,如果您只想使用 Illuminate 的 Collection,您只需导入 Collection 类即可
$collection = new IlluminateExtracted\Support\Collection(['my collection']);
或使用常规助手
$collection = collect(['my collection']);
文档
这是 Laravel 的 Collection,功能齐全,因此您可以查看 其文档。唯一的区别是您可以将项(数组键)作为属性访问,就像任何其他 PHP 对象一样
$collection->map($mapper)->reduce($reducer)->random()->address->street $this->sendThanks( $collection->where('full_name', 'Barack Obama')->addresses->random() ); $countries->where('name.common', 'United States')->first()->currency->symbol;
安装
通过 Composer
$ composer require pragmarx/coollection
用法
直接实例化类或使用助手
$c = new Coollection(['first_name' => 'Barack Obama']); $c = coollect(['first_name' => 'Barack Obama']);
然后您将其用作对象
echo $c->first_name; // Barack Obama echo $c->flip()->barak_obama == 'first_name' ? 'true' : 'false'; // true
一个单词键不区分大小写
echo $c->rio; echo $c->RIO;
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
测试
$ composer test
贡献
请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT 了解详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
致谢
- 此包是 Tightenco\Collect 的扩展,由 Matt Stauffer 从 Tighten 开发。
- Tightenco\Collect 是由 Taylor Otwell 创建的 Laravel 框架的 Collection 的提取。
- 包创建者 Antonio Carlos Ribeiro
- 贡献者
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。