计算对象/受保护的数组

时间:2016-01-30 11:19:13

标签: php arrays

$order->items的变量中,我的输出如下。我删除了数组的内容,以便于查看。

如何计算数组?该示例将输出3.

我不熟悉对象和受保护的元素。

Store\Model\Collection Object ( [items:protected] => 

Array ( 

    [0] => Store\Model\OrderItem Object ( ... ) 

    [1] => Store\Model\OrderItem Object ( ... ) 

    [2] => Store\Model\OrderItem Object ( ... )

)

2 个答案:

答案 0 :(得分:2)

如果班级Store\Model\Collection实施Countable界面,您只需计算count($object);

否则添加返回数组大小的方法

class Store\Model\Collection
{
    protected $items;
    ....
    public function getItemsCount()
    {
        return count($this->items);
    }
}

并在申请中将其用作

$object->getItemsCount();

答案 1 :(得分:0)

您无法直接访问对象的受保护属性。您必须向Store \ Model \ Collection类添加一个函数,以使您的数组或函数将项目计入数组。

<?php

class Obj{
    $name = "";
    public function __construct($name){
        $this->name = $name
    }
}

class Collection{
    protected $items = [
        new Obj("toto"),
        new Obj("tata"),
        new Obj("tutu")
    ]

    public function getItems(){
        return $this->items;
    }

    public function countItems(){
        return count($this->items);
    }
}

?>

受保护的属性或受保护的函数只能在继承的类或类中访问。因此,您必须具有公共函数才能访问该类之外的此属性或函数。