0

首先,抱歉英语不好。

我正在尝试从这样的 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);
?>

但我不知道为什么它每次都重复相同的值,因为每行总是有相同的值......

看起来服务管理器总是在保存之前克隆同一个对象..

任何人都可以帮忙吗?

4

1 回答 1

0

尝试看看这是否有所作为:

$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,
    ),
于 2013-10-22T08:55:30.050 回答