php - PHP使用foreach为对象更改默认迭代器

php - PHP使用foreach为对象更改默认迭代器,第1张

使用这样的对象:

class test {
var $propa = 'a';
var $propb = 'b';
var $propc = 'c';
var $propd = array(1,2,3,4);
}

如何使用foreach迭代test :: $ propd而不直接引用?当量:

$t = new test;
foreach ($t as $k => $v){
echo 'propd['.$k.']='.$v.', ';
}
// propd[0]=1, propd[1]=2, propd[2]=3, ...

是否有一些涉及实现ArrayAccess的东西? THX!

最佳答案:

1 个答案:

答案 0 :(得分:0)

我建议分离功能,并将您的属性设置为私有。

示例:

class Test {

   private $propertyA = 'a';
   private $propertyB = 'b';

   public function getProperties()
   {
        return [
           'propertyA' => $this->propertyA,
           'propertyB' => $this->propertyB
        ];
   }

}

但是,如果要更改属性值,则执行属性的getter和setter。

使用上面的代码,您可以:

<?php

$test = new Test;
foreach ($test->getProperties() as $key => $value) {
    echo $key . ' = ' . $value;
}

?>

您还可以使用此方法限制要输出的属性。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复