主な質問はZF2に関するものですが、主なタスクはZF2をYiiに統合する方法です。
ZF1の場合は、必要なファイルを含めるだけです。ZF2の構造はもう少し複雑です。
特にServiceManagerモジュールをロードする必要があります。
私はそれを試しました:
$loader = new Zend\Loader\ClassMapAutoloader();
$loader->registerAutoloadMap(realpath(dirname(__FILE__) . '/lib/Zend/ServiceManager'));
$loader->register();
そしてエラーが発生しました:
Warning: include(/Project/lib/Zend/ServiceManager): failed to open stream: Invalid argument in /Project/lib/Zend/Loader/ClassMapAutoloader.php on line 186
Warning: include(): Failed opening '/Project/lib/Zend/ServiceManager' for inclusion (include_path='/Project/lib:.:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear') in /Project/lib/Zend/Loader/ClassMapAutoloader.php on line 186
Fatal error: Uncaught exception 'Zend\Loader\Exception\InvalidArgumentException' with message 'Map file provided does not return a map. Map file: "/Project/lib/Zend/ServiceManager"' in /Project/lib/Zend/Loader/ClassMapAutoloader.php:88
Stack trace:
#0 /Project/index.php(14): Zend\Loader\ClassMapAutoloader->registerAutoloadMap('/Project/...')
#1 {main}
thrown in /Project/lib/Zend/Loader/ClassMapAutoloader.php on line 88
ドキュメントによると、前にconfig配列に名前空間の説明を設定する必要がありますか?
誰かが例を挙げてもらえますか?モジュールを1つだけ含める方法を教えてください。
更新1:
また、私はこれを試しました:
require_once 'Zend/Loader/StandardAutoloader.php';
$l = new Zend\Loader\StandardAutoloader();
$l->registerPrefix('Zend', realpath(dirname(__FILE__) . '/lib/Zend/') );
$l->register();
できます。その後、私は電話しました:
use Zend\Debug;
Zend\Debug::dump($l);
これにより、エラーが発生します。
Fatal error: Class 'Zend\Debug' not found in ...
更新2:
このコードは私のために働きます:
require_once 'Zend/Loader/StandardAutoloader.php';
$l = new Zend\Loader\StandardAutoloader();
$l->registerNamespace('Zend', realpath(dirname(__FILE__) . '/lib/Zend'));
$l->registerPrefix('Zend', realpath(dirname(__FILE__) . '/lib/Zend') );
$l->register();
これで、プロジェクトのどこにでもZendライブラリを含めることができます。とにかく私は他の解決策を見てうれしいです