在$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 ( ... )
)
答案 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);
}
}
?>
受保护的属性或受保护的函数只能在继承的类或类中访问。因此,您必须具有公共函数才能访问该类之外的此属性或函数。