pragmarx/colection

Laravel Illuminate 集合对象化属性

v0.8.1 2022-09-07 10:32 UTC

README

Latest Stable Version License Code Quality Build Downloads

Coverage StyleCI PHP

将集合项作为对象属性访问

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 StaufferTighten

为什么?

用一个问题来回答:哪一个更容易看?

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

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件