php - Zend Framework 2 包括自定义库

标签 php zend-framework2

我的目录结构是这样的:

  • c:\Workspaces\Zend
  • c:\Workspaces\自定义库

自定义库是一个共享库,正在其他应用程序中使用。它不使用命名空间,仅使用旧式下划线。

我下载了 ZF2-Restful-Module-Skeleton,打算将其用作静态服务器。在 InfoController 中我有这样的代码:

namespace Main\Controller;

use Zend\Mvc\Controller\AbstractRestfulController;

class InfoController extends AbstractRestfulController
{
  public function getList()
  {
    $data = array(
        'phone'   => '+30123456789',
        'email'   => 'email@domain',
    );

    $Res = new CL_Res_Chain_Mutable();

    return $data;
  }
}

错误消息是:

Fatal error: Class 'Main\Controller\CL_Res_Chain_Mutable' not found in C:\Workspaces\Zend\module\Main\src\Main\Controller\InfoController.php

显然,我需要将这个自定义库添加到我的 Zend 应用程序中,但我在这里“有点”迷失,我真的不知道如何做到这一点。我在谷歌上搜索了几个解决方案,但似乎都不是这样的。

此外,我在文件夹 c:\Workspaces\Custom library 2 中有另一个库,其中包含(以及其他文件)文件(类)D.php,我像 D::一样使用它转储($数据);

如何让它在我的 Zend 应用程序中工作?

最佳答案

您需要配置StandardAutoloader来加载您的库类。最简单的方法是修改应用程序模块的 Module::getAutoloaderConfig() 方法,使其看起来像这样:

public function getAutoloaderConfig()
{
    return array(
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            ),
            'prefixes' => array(
                'CL' => 'c:\\Workspaces\\Custom library/CL',
                'D' => 'c:\\Workspaces\\Custom library 2/D',
            ),
        ),
    );
}

我添加了一个 prefixes 键,然后列出了前缀名称以及在磁盘上的位置。 Standard Autoloader documentation有更多详细信息。

如果您正在使用 Zend Skeleton Application您也可以简单地将这些命名空间添加到您的 init_autoloader.php 中文件。

关于php - Zend Framework 2 包括自定义库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14952697/

相关文章:

zend-framework2 - zf2 : how to get Service Locator in Model

php - Doctrine 2类表继承YML

php - 计算从 PHP `mysql_query` 函数返回的行数的可靠方法是什么?

php - ZF2 中的 session

javascript - RegExp 适用于 JS 和 PHP,但不适用于 Java

php - MySQL 日期比较建议

xml - 在 Zend Framework 2 应用程序中返回 XML 响应的正确方法是什么?

PHP 内置 Web 服务器未找到 Assets

php - 基于对缓存对象的引用查询文档

php - 在 sql 中将日期保存为 varchar 可能是正确的?