最新のテクノロジー(Apache 2.4、PHP 5.4、PostgreSQL 9.1)を使用して、学習目的で新しいWebアプリケーションをセットアップしようとしています。
ZendFramework2を使用して開発することを選択しました。
私のメインモジュールでは、このメソッドを定義しました:
public function getServiceConfiguration() {
return array(
'factories' => array(
'adapter' => function ($sm) {
$config = $sm->get('config');
$adapter = new Adapter($config['db']);
return $adapter;
}
),
);
}
$ config ['db']は、autoload/global.phpで定義されています。
return array(
'db' => array(
'driver' => 'PDO',
'dsn' => 'pgsql:host=localhost;port=5436;user=root;password=myrootpwd',
)
);
しかし、$ serviceManager-> get('adapter')を呼び出そうとすると、次のような例外が発生します。
致命的なエラー:キャッチされない例外'Zend \ Db \ Adapter \ Exception \ InvalidArgumentException' with message'提供またはインスタンス化されたドライバーオブジェクトは、C:\ Program Files \ 626Suite \ application\libraryのZend\Db \ Adapter \ Driver\DriverInterface'を実装していません294行目の\Zend\ ServiceManager \ ServiceManager.php
Zend \ Db \ Adapter \ Exception \ InvalidArgumentException:提供またはインスタンス化されたドライバーオブジェクトは、C:\ Program Files \ 626Suite \ application \ library \ Zend \ Db \ Adapter\Adapter.phpのZend\Db \ Adapter \ Driver\DriverInterfaceを実装していません80行目
コールスタック:
0.0015 121600 1. {main}()C:\ Program Files \ 626Suite \ application \ data \ script \ install.php:0
0.5699 936080 2. Zend \ ServiceManager \ ServiceManager-> get(string(7)、? ??)C:\ Program Files \ 626Suite \ application \ data \ script \ install.php:7
0.5700 936440 3. Zend \ ServiceManager \ ServiceManager-> create(array(2))C:\ Program Files \ 626Suite \ application \ library \ Zend \ ServiceManager \ ServiceManager.php:277
0.5701 936520 4. Zend \ ServiceManager \ ServiceManager-> createServiceViaCallback(class Closure、string(7)、string(7))C:\ Program Files \ 626Suite \ application \ library \ Zend \ ServiceManager \ ServiceManager.php:353
0.5701 936672 5. call_user_func(class Closure、class Zend \ ServiceManager \ ServiceManager、string(7)、string(7))C:\ Program Files \ 626Suite \ application \ library \ Zend \ ServiceManager \ ServiceManager.php:543
0.5701 936696 6 .Age \ Module-> Age {closure}(class Zend \ ServiceManager \ ServiceManager、string(7)、string(7))C:\ Program Files \ 626Suite \ application \ library \ Zend \ ServiceManager \ ServiceManager.php:543
0.6047 1024184 7. Zend \ Db \ Adapter \ Adapter-> __ Construct(class Zend \ Config \ Config、???、???)C:\ Program Files \ 626Suite \ application \ module \ Age \ Module.php:43
編集:
私はファクトリを次のように変更しようとしました:
public function getServiceConfiguration() {
return array(
'factories' => array(
'adapter' => function ($sm) {
$config = $sm->get('config');
$PDO = new \PDO($config['db']['dsn']);
$adapter = new Adapter($PDO);
return $adapter;
}
),
);
}
そして、最初にデータベース「root」が存在しないというエラーが発生しましたが、構成を次のように変更した後です。
return array(
'db' => array(
'driver' => 'PDO',
'dsn' => 'pgsql:host=localhost;port=5436;dbname=postgres;user=root;password=myrootpwd',
)
);
前に説明した例外を取得することに戻りました。