首先,对不起英语不好。
我正在尝试从csv列表中加载多个用户,如下所示:
<?php
$handle = fopen ("teste.csv","r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$user = $this->getServiceLocator()->get('User');
$user->exchangeArray(
array( 'firsname'=>$data[0],
'lastname'=>$data[1],
'email'=>$data[2],
'adress'=>$data[3],
'phone'=>$data[4]
)
);
$userTable = $this->getServiceLocator()->get('UserTable');
$userTable->save($user);
}
fclose ($handle);
?>
但我不知道为什么它每次都重复相同的值,因为每行总是有相同的值......
看起来服务管理器总是在保存之前克隆相同的对象。
谁能帮忙?
尝试看看这是否有区别:
$user = (clone) $this->getServiceLocator()->get('User');
服务管理器只会在每次都为您提供一个新实例,如果您明确告诉它
http://framework.zend.com/manual/2.0/en/modules/zend.service-manager.quick-start.html
请注意有关共享服务的部分。这将告诉服务管理器您每次都需要一个新的用户对象,然后您就不需要像上面那样克隆该对象
'shared' => array(
// Usually, you'll only indicate services that should _NOT_ be
// shared -- i.e., ones where you want a different instance
// every time.
'User' => false,
),