Foreach循环导致对象实例化

时间:2010-08-02 13:36:43

标签: php oop object foreach instantiation

我要求从表中接受一系列已检查项目,并根据已选择的项目更新字段。最初我的想法是简单地循环遍历数组中的每个项目并访问特定类中的函数来更新状态。

我稍微关注这种方法,因为它意味着为循环的每次迭代实例化一个对象,以便更新相关状态。

foreach($example as $exampleId){
    $newExample=new Example($exampleId);
    $newExample->updateStatus('active');
}

有没有更好的解决方法?这似乎是不好的做法,但我正在努力寻找另一种方式。

2 个答案:

答案 0 :(得分:3)

这是一个选项吗?

$newExample=new Example();
foreach($example as $exampleId){
    $newExample->updateStatus($exampleId,'active');
}

否则你总是可以这样做:

foreach($example as $exampleId){
    $newExample=new Example($exampleId);
    $newExample->updateStatus('active');
    $newExample->__destruct(); 
    unset($newExample);
}

为此你需要在你的班级中使用另一种方法

$newExample=new Example();
foreach($example as $exampleId){
    $newExample->set_example_id($exampleId);
    $newExample->updateStatus('active');
}

答案 1 :(得分:1)

听起来创建对象有开销,因为它是从数据库或某个地方加载的?你能不能为Example添加一个静态方法,而不必创建一个加载和填充自身的对象?然后你可以这样做:

foreach($example as $exampleId){
    Example::UpdateExampleStatus($exampleId,'active');
}