PHP:如何遍历类的所有对象?
我有一段代码,其中数组包含对象,其中包含对象,例如:PHP:如何遍历类的所有对象?,php,class,object,Php,Class,Object,我有一段代码,其中数组包含对象,其中包含对象,例如: <?php class person { public $name; public $foods=array(); } class food { public $foodnames=array() ; } $peoplearray[$name] = new person; $peoplearray[$name]->name = 'john' ; $peoplearray[$name]->foods[$
<?php
class person {
public $name;
public $foods=array();
}
class food {
public $foodnames=array() ;
}
$peoplearray[$name] = new person;
$peoplearray[$name]->name = 'john' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'ice cream' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'banana' ;
$peoplearray[$name] = new person;
$peoplearray[$name]->name = 'julie' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'chocolate' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'coffee' ;
$peoplearray[$name]->foods[$key] = new food;
$peoplearray[$name]->foods[$key]->foodnames[$key] = 'rice' ;
?>
现在我需要遍历类food中的所有对象,以便获取它们的属性。有人知道最有效的方法吗?在food类中声明一个静态属性,并在构建时将您的food对象放入其中:
class food {
public static $collection = array();
// other properties ...
public function __construct() {
// Stuff
self::$collection[] = $this;
}
}
// Create foo objects
$f = new food();
// Iterate
foreach(food::$collection as $foodobj) {
// Stuff
}
这是一个数组
foreach()
就足够了。您还应该添加一个\uu destruct()
实现来从集合中删除对象。我会使用spl\u object\u hash($this)
)为集合编制索引,然后从集合中删除将非常简单。我同意,应该处理对象销毁(可能除非在脚本关闭时,食品对象永远不会被销毁…)