我在/vendor/
中创建了一个子文件夹MyNamespace
(它对于自己的库是否是正确的位置?),并且希望在我的应用程序中使用像MyNamespace\Mvc\Router\MyCustomRouter
这样的类。我如何将这个库包含到基于名称空间的自动加载?如何使用基于名称空间的自动加载将库包含到Zend Framework 2应用程序中?
2
A
回答
0
编辑init_autoloader.php
和改变if ($zf2Path) {
部分是:
if ($zf2Path) {
if (isset($loader)) {
$loader->add('Zend', $zf2Path);
} else {
include $zf2Path . '/Zend/Loader/AutoloaderFactory.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'autoregister_zf' => true,
'namespaces' => array(
'MyNamespace' => __DIR__ . '/vendor/MyNamespace',
),
)
));
}
}
注意添加Zend\Loader\StandardAutoloader
段内的MyNamespace
关键的。
2
除了罗布的回答,一些其他的方式来自动加载自定义库
首先,确保你的文件夹结构PSR0兼容
在示例中使用的神话PSR0兼容myNameSpace对象库的典型结构
vendor/
MyNamespace/
lib/
MyNamespace/
FooClass.php
BarClass.php
使用getAutoloaderConfig
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
),
);
}
一个Module.php文件包括在
直接使用AutoloaderFactory
配置StandardAutoloader
// Setup autoloading
require 'init_autoloader.php';
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../vendor/MyNamespace/lib/MyNamespace',
),
)
));
你甚至可以做同样的./config/autoload/文件
<?php
// file ./config/autoload/namespaces.local.php
Zend\Loader\AutoloaderFactory::factory(array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
'MyNamespace' => __DIR__ . '/../../vendor/MyNamespace/lib/MyNamespace',
),
)
));
另一个替代方案,包括您的LIB是编辑vendor/composer/autoload_namespaces.php
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'MyNamespace\\' => $vendorDir . '/MyNamespace/lib/',
);
0
此外你可以使用的composer autoloading
{
"autoload": {
"psr-0": {"MyNamespace\\": "vendor/MyNamespace/"}
}}
相关问题
- 1. jQuery被自动加载到我的Zend Framework应用程序中
- 2. Zend Framework 2使用我自己的库和名称空间混淆
- 3. 如何在Zend Framework中使用名称空间?
- 4. Zend自动载入器名称空间[]和自动载入器名称空间之间的区别
- 5. 基于Zend Framework中名称空间的具有句号分隔自动载入解析的目录?
- 6. 使用PHP 5.3命名空间的Zend资源自动加载
- 7. Annotations命名空间未加载Zend Framework 2的DoctrineMongoODMModule
- 8. Doctrine 2知识库中的Zend Framework自动加载器
- 9. 使用Zend Framework应用程序将子视图加载到IFrame中
- 10. 按类名称自动加载类,如Zend Framework
- 11. 在PHP 5.3中使用名称空间自动加载?
- 12. 将包含的类附加到名称空间?
- 13. 如何使用lxml将名称空间包含到xml文件中?
- 14. 是否有可能为zend模型使用多个名称空间,我将如何自动加载它?
- 15. Symfony2:自动加载/注册名称空间从一个包中
- 16. Zend Framework:禁用基本模型表的自动加载
- 17. 如何/应该将Zend Framework 2包含到Git版本化项目中?
- 18. 如何将FCKeditor集成到Zend Framework应用程序中?
- 19. 如何将第三方动作助手添加到Zend Framework 1.8+应用程序?
- 20. 如何将文件夹添加到程序的名称空间?
- 21. 如何添加空间应用名称
- 22. C#/ .NET如何从类名中找到包含名称空间
- 23. 将Ruby gem加载到用户定义的名称空间中
- 24. Zend Framework 2路由基于路由段的动作名称的一部分
- 25. 如何使用java程序将名称空间添加到xml文件
- 26. Zend Framework 2.0中的自动加载自定义库
- 27. 如何使用AbstractRestfulController在Zend Framework 2中创建简单的RESTful应用程序?
- 28. 如何使用名称空间包含PHP类
- 29. 包含多个名称空间的XSLT for XML包含多个名称空间
- 30. 应用程序名称空间丢失
可能的复制 - > http://stackoverflow.com/questions/8559107/autoload-custom-library-in-zend-framework-2-0?rq=1 – Crisp 2013-03-27 15:25:00
我('Module#getAutoloaderConfig()'和''MyNamespace'=> __DIR__)显示了如何[在这里](http://stackoverflow.com/a/10974043/2019043)。 '/../../ vendor/MyNamespace'),但是我的类仍然无法找到。 – automatix 2013-03-27 15:27:14
您是否在'/ vendor/MyNamespace /中创建了一个Module.php文件来做到这一点? – Crisp 2013-03-27 15:28:41