0

我只是希望有可能使用这个库的类,但 2 小时后不可能:

那么如何使用 Zend Framework 2.1 和他的自动加载器来只使用这个库的类而不创建 ZF 项目呢?

我已经用 classmap_generator、inlude_path 尝试了一切……我没有任何错误,但它仍然返回我:

找不到动作类?找不到版本类!

谢谢。

4

4 回答 4

3

您可以通过 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/

于 2013-02-21T11:43:55.090 回答
2

由于 ZF2 组件被解耦并专注于特定任务,因此一个类经常使用另一个类来执行其业务。仅仅包含一个类文件通常是不够的。

因此,ZF2 肯定需要一些自动加载。但是您不必使用 ZF2 自动装载机。

如果您的应用程序中没有自动加载,那么添加实际上很容易:

  1. 确保 Zend 库的路径位于您的include_path.
  2. 注册一个符合 PSR-0 标准的自动加载器,使用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 类来完成它的业务。

于 2013-02-21T16:10:05.517 回答
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.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

于 2013-02-22T10:14:04.390 回答
0

只需在您的自动加载器中注册命名空间。

如果您使用的是作曲家,那么include_once '<path to vendor dir>/autoload.php';在您的 php 文件顶部添加

于 2013-02-21T11:38:10.160 回答