我希望有可能使用这个库的类,但在2小时后不可能:
那么如何使用Zend Framework 2.1和他的自动加载器来使用这个库的类而不是创建一个ZF项目呢?
我已经使用classmap_generator,inlude_path尝试了一切...我没有任何错误,但它仍然返回我:
无法找到动作类?找不到版本类!
谢谢你。
答案 0 :(得分:3)
您可以通过composer安装单独的Zend Framework模块,它将为您完成大部分工作:
composer.json
{
"require": {
"zendframework/zend-http": "2.*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.zendframework.com/"
}
],
"minimum-stability": "dev"
}
这应该照顾你的任何autlloading。 Composer会生成一个自动加载器,您只需将其包含在您的应用中:
require 'vendor/autoload.php';
那里有很多作曲家的例子:
https://packages.zendframework.com/#composer
http://net.tutsplus.com/tutorials/php/easy-package-management-with-composer/
答案 1 :(得分:2)
由于ZF2组件已解耦并专注于特定任务,因此一个类通常使用另一个组来执行其业务。简单地包含单个类文件通常是不够的。
因此,ZF2肯定需要一些自动加载。但您不必使用ZF2自动装载机。
如果您的应用中没有自动加载功能,那么实际上很容易添加:
include_path
。spl_autoload_register()
类似的东西:
spl_autoload_register(function($class)){
$file = str_replace('\\', '/', $class) . '.php';
$resolvedFile = stream_resolve_include_path($file);
if (file_exists($resolvedFile)) {
include $resolvedFile;
return $class;
}
});
如果您的应用程序已经有自动加载器,那么如果它不符合PSR-0,我会感到非常惊讶。和以前一样,确保Zend库在include_path
。
即使Zend库不在您的包含路径中,您也可以创建一个自定义自动加载器,该自动加载器知道库所在的文件系统的位置。
在所有情况下,使用所需的类是:
$myinstance = new \Zend\Component\Class();
正确的自动加载 - 无论你选择了什么 - 这个类可以使用它需要的任何其他Zend类来开展业务。
答案 2 :(得分:1)
经过多次搜索,我已经安装了作曲家。但是我对这个解决方案并不十分满意,因为它触及了我的系统。
这是我的程序,我仍然说ZF文档很差。
使用COMPOSER安装ZEND FRAMEWORK
1)允许白名单
suhosin.executor.include.whitelist = phar 在文件中:nano /etc/php5/cli/conf.d/suhosin.ini
2)下载作曲家
Apt-get install curl curl -sS https://getcomposer.org/installer | PHP
3)移动作曲家
mv composer.phar / usr / local / bin / composer
4)复制composer.json
复制composer.json(来自zend框架档案)我的根文件夹应用程序
5)安装Composer
执行composer.json
的位置现在,您的app文件夹中将有一个名为“vendor”的文件夹,可在您的php代码中使用:
include("vendor/autoload.php");
new Zend\Mail\Storage\Pop3(...);
现在它适用于我。
错误允许内存大小:
php -r“echo ini_get('memory_limit')。PHP_EOL;” 改为1024M nano /etc/php5/cli/php.ini /etc/init.d/apache2 restart
无法克隆http://github.com/zendframework/Component_ZendStdlib.git,找不到git,
安装GIT Apt-get install git
答案 3 :(得分:0)
只需在自动加载器中注册命名空间。
如果你正在使用作曲家,那么在你的php文件上添加include_once '<path to vendor dir>/autoload.php';