我之前使用的是Zend Framework2的下载版本,基本上可以做这样的事情:
// 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'
)
));这不管用。我假设名称空间中可能没有反斜杠?有没有办法让这件事起作用呢?优选地,不必定义每个单独的包装。
发布于 2013-03-03 02:17:37
您只需修复路径:
$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-02 01:12:39
让它为你自动加载Zend:
$autoLoader = new StandardAutoloader(array(
'autoregister_zf' => true, // Auto load Zend Namespace..
'namespaces' => array(
// extra namespaces
)
));https://stackoverflow.com/questions/15162157
复制相似问题