0

以前は Zend Framework 2 のダウンロード バージョンを使用していましたが、基本的に次のようなことができました。

// Set include paths (add Zend to the path)
set_include_path(get_include_path() . PATH_SEPARATOR . $__CONFIG['zendPath']);

// Setup the Zend Autoloader
require_once('library\Zend\Loader\StandardAutoloader.php');

$autoLoader = new StandardAutoloader(array(
    'namespaces' => array(
        'Zend' => $__CONFIG['zendPath'] . '/library/Zend'
    )
));

これが機能するのは、すべての Zend パッケージがライブラリ フォルダー内にあるためです。composer を使用して、必要な Zend パッケージのみをロードしたいと考えました。私が直面している問題は、パッケージが次のように配置されることです。

zendframework/zend-cache/Zend/...
zendframework/zend-loader/Zend/...
zendframework/zend-validator/Zend/...
etc.

次のように、StandardAutoloader で個別の名前空間宣言を試しました。

$autoLoader = new StandardAutoloader(array(
    'namespaces' => array(
        'Zend\Cache' => $__CONFIG['zendPath'] . '/library/zend-cache/Zend/Cache',
        'Zend\Loader' => $__CONFIG['zendPath'] . '/library/zend-loader/Zend/Loader',
        'Zend\Validator' => $__CONFIG['zendPath'] . '/library/zend-validator/Zend/Validator'
    )
));

それはうまくいきません。名前空間におそらくバックスラッシュを含めることはできないと思いますか? これを機能させる方法はありますか?できれば、個々のパッケージを定義する必要はありません。

4

2 に答える 2

1

パスを修正する必要があります。

$libs = $__CONFIG['zendPath'];
$autoLoader = new StandardAutoloader(array(
    'namespaces' => array(
        'Zend\Cache' => $libs . '/library/zend-cache/Zend',
        'Zend\Loader' => $libs . '/library/zend-loader/Zend',
        'Zend\Validator' => $libs . '/library/zend-validator/Zend',
    )
));

それでうまくいくはずです(テストされていないので、トレーリングについてはよくわかりませんZend

于 2013-03-02T18:17:37.107 に答える