我使用zend framework 2应用程序收到以下错误消息:
缺少参数驱动程序的实例/对象 Zend \ Db \ Adapter \ Adapter :: __ construct(文件: C:\ XAMPP \ zendfw2 \ ZendSkeletonApplication \厂商\ zendframework \ zendframework \库\ Zend的\迪\ Di.php:856)
我的代码如下: 自动加载/ local.php:
return array(
'di' => array(
'instance' => array(
'Zend\Db\Adapter\Adapter' => array(
'parameters' => array(
'driver' => 'Zend\Db\Adapter\Driver\Pdo\Pdo',
),
),
'Zend\Db\Adapter\Driver\Pdo\Pdo' => array(
'parameters' => array(
'connection' => 'Zend\Db\Adapter\Driver\Pdo\Connection',
),
),
'Zend\Db\Adapter\Driver\Pdo\Connection' => array(
'parameters' => array(
'connectionInfo' => array(
'dsn' => "mysql:dbname=zendtest;host=localhost",
'username' => 'root',
'password' => '',
'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''),
),
),
),
),
),
);
module.config.php:
return array(
'di' => array(
'Test2\Model\ManagerAbstract' => array(
'parameters' => array(
'adapter' => 'Zend\Db\Adapter\Adapter',
),
),
),
...);
ManagerAbstract.php:
namespace Test2\Model;
use Zend\Db\Adapter\Adapter;
use Zend\Db\Adapter\AdapterAwareInterface;
abstract class ManagerAbstract implements AdapterAwareInterface
{
protected $adapter;
public function setDbAdapter(Adapter $adapter)
{
$this->adapter = $adapter;
}
public function getUserList() {
$sql = new Sql($this->adapter);
$select = $sql->select();
$select->from(array('u'=>'tsrv_user'));
$select->where(array('username' => $username));
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();
return $results;
}
}
user.php的:
namespace Test2\Model;
class User extends ManagerAbstract
{
public function __construct() {
}
}
我在控制器中称它为:
$di = new Di();
$model = $di->get('Test2\Model\User');
$model->getUserList();
请指出导致错误消息的原因,请帮助我吗?
答案 0 :(得分:0)
我认为Zend\Db\Adapter\Adapter
配置中Di
的定义并不正确。
您可以在此处找到正确的方法:Zend\Db Adapter instantiation through Zend Framework 2 Di。