什么是Laravel系列?

时间:2017-01-04 14:31:12

标签: php laravel

什么是Laravel系列? PHP数组和Laravel集合之间有什么区别?

看起来集合与数组非常相似。例如,通过get()方法检索的结果是数据集合。但是当我们想要将它用作数组时,我们必须使用toArray()方法。为什么呢?

4 个答案:

答案 0 :(得分:6)

它基本上是PHP数组函数的API包装器。但它有更多的功能,有利于阵列处理。

<强> 1。避免括号地狱

在5个大括号中考虑这个案例:

 shuffle(shuffle(arsort(array_unique(array_merge($array1,$array2)))));

这是地狱,如果拥有超过10个大括号的阵列,你最终可能会失去对大括号的追踪。但是,如果您使用Collection,则可以将其替换为:

collect($array1)
     ->merge($array2)
     ->unique()
     ->sort()
     ->shuffle()
     ->shuffle()

这是更具可读性,面向对象和流动思维。

<强> 2。统一使用API​​

这是PHP原始API问题,你永远不知道数组在参数中的位置。他们只是不一致。例如:

    array_walk ( $array , $callback );
    array_map ( $callback , $array);
    array_merge ( $array1 ,$array2 );// return a new array
    array_push ($array1 ,$value); // not return a new array

Laravel Collect只提供一致的API,让我的生活更轻松。

    collect($array)
         ->each($callback)
         ->map($callback)
         ->merge($array2)
         ->push($value)

3.Collection API处理键值数组更好

Laravel专注于处理来自数据库的数据。很多情况都是键值数组的情况,而不是索引数组。因此,Laravel集合有许多针对原始PHP函数的扩展方法,这些函数使用数组的键进行处理。例如:

 $array=[
        ["id"=>1,"name"=>"Apple"],
        ["id"=>2,"name"=>"Banana"],
        ["id"=>1,"name"=>"Apple"],
        ["id"=>2,"name"=>"Banana"],
    ];

    $result= collect($array)->unique("id");

结果将是:

 Array
(
    [0] => Array
        (
            [id] => 1
            [name] => Apple
        )

    [1] => Array
        (
            [id] => 2
            [name] => Banana
        )

)

<强> 4。处理多层阵列

大多数PHP原始数组API仅处理数组的顶层。如果要处理数组的深层,代码可能会变得更加复杂。但是许多Laravel集合的API允许您访问数组的深层。

例如:

 $array=[
        ["id"=>1,"product"=>['name'=>"Apple"]],
        ["id"=>2,"product"=>['name'=>"Watermelon"]],
        ["id"=>3,"product"=>['name'=>"Banana"]],

    ];

    $result= collect($array)->sortBy("product.name");

结果将是:

Array
(
    [0] => Array
        (
            [id] => 1
            [product] => Array
                (
                    [name] => Apple
                )

        )

    [2] => Array
        (
            [id] => 3
            [product] => Array
                (
                    [name] => Banana
                )

        )

    [1] => Array
        (
            [id] => 2
            [product] => Array
                (
                    [name] => Watermelon
                )

        )

)

<强> 5。原始PHP

中缺少更多数组助手

除此之外,Laravel集合在每个新版本中增加了许多非常有用的数组API。许多有用的Helper旨在处理数组的Key-Value类型,因此对于开发应用程序非常有用。例如:keyBy()where()isEmpty()isNotEmpty()等。

此外,Collection是可宏的,这意味着您可以扩展Collection API,使Collection更适合您的项目。

总而言之,Laravel系列是我开发的强大数组处理助手。

答案 1 :(得分:4)

Collection是处理数据数组的便捷包装器。集合具有数组的所有便利性,也有一堆自己的helpers

  

Illuminate \ Support \ Collection类为处理数据数组提供了一个流畅,方便的包装器。如您所见,Collection类允许您链接其方法以执行流畅的映射和减少底层数组。通常,集合是不可变的,这意味着每个Collection方法都返回一个全新的Collection实例。

https://laravel.com/docs/5.3/collections

答案 2 :(得分:1)

将Collection视为类固醇的数组。它是一个与数组相同的对象 - 也就是说,您可以使用$collection['item']获取项目并使用$collection['foo'] = 'bar'进行设置 - 但它附带了用于执行常见操作的更高级别函数的其他方法更轻松。这些方法通常是使用foreach和手动操作数组的替代方法。 Adam Wathan在使用集合而不是数组时可以获得一些好的practical examples好处。在线其他地方也有good introductions

答案 3 :(得分:0)

Laravel集合


Laravel集合,什么使它们有用?


    1. 简化项目“集合”时的开发人员生活
    1. 未修饰到集合中的项目
    • 数组,对象,基元(字符串,布尔值,数字)或它们的组合-集合无关紧要。
    1. 121种方法 available Collection Methods
    1. Fluent Api: Laravel收集方法可以链接在一起
    1. 可扩展:您可以使用 macro function.
    2. 使用自定义功能扩展Laravel集合。
    1. 从Laravel外部有用:在Laravel的核心团队的支持下,Collections是Laravel的Illuminate Components之一。 Illuminate得到Laravel核心团队的支持,但被视为“组件” 。组件经过模块化和封装,这意味着您可以使用作曲家轻松地在Laravel框架之外使用Laravel集合来安装Illuminate\Support

正在运行的Laravel集合


60+ Laravel Collection Methods in (Almost) 15 Minutes