我只是希望有可能使用这个库的类,但 2 小时后不可能:
那么如何使用 Zend Framework 2.1 和他的自动加载器来只使用这个库的类而不创建 ZF 项目呢?
我已经用 classmap_generator、inlude_path 尝试了一切……我没有任何错误,但它仍然返回我:
找不到动作类?找不到版本类!
谢谢。
我只是希望有可能使用这个库的类,但 2 小时后不可能:
那么如何使用 Zend Framework 2.1 和他的自动加载器来只使用这个库的类而不创建 ZF 项目呢?
我已经用 classmap_generator、inlude_path 尝试了一切……我没有任何错误,但它仍然返回我:
找不到动作类?找不到版本类!
谢谢。
您可以通过 composer 安装单独的 Zend Framework 模块,它会为您完成大部分工作:
作曲家.json
{
"require": {
"zendframework/zend-http": "2.*"
},
"repositories": [
{
"type": "composer",
"url": "http://packages.zendframework.com/"
}
],
"minimum-stability": "dev"
}
这应该会为您处理任何自动加载。Composer 会生成一个自动加载器,您只需将其包含在您的应用程序中:
require 'vendor/autoload.php';
那里有很多作曲家的例子:
https://packages.zendframework.com/#composer
http://net.tutsplus.com/tutorials/php/easy-package-management-with-composer/
由于 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 类来完成它的业务。
经过多次搜索,我已经安装了作曲家。但我对这个解决方案不太满意,因为它触及了我的系统。
这是我的程序,我仍然说 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.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
只需在您的自动加载器中注册命名空间。
如果您使用的是作曲家,那么include_once '<path to vendor dir>/autoload.php';
在您的 php 文件顶部添加