如何在我的项目中使用Zend Framework 2类?

时间:2013-02-21 11:32:03

标签: php zend-framework2

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

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

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

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

谢谢你。

4 个答案:

答案 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自动装载机。

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

  1. 确保Zend库的路径位于include_path
  2. 使用spl_autoload_register()
  3. 注册符合PSR-0标准的自动加载器

    类似的东西:

    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';