2015-01-20 54 views
2

我的目录结构看起来像注册库中ZF2

app/ 
config/ 
data/ 
libraries/ 
    Erfurt/ 
/module 
/public 
/vendor 

我想使用的爱尔福特库。爱尔福特不使用名称空间,而是使用供应商 - 下划线类命名约定,例如, G。 class Erfurt_App

我在网上找到了不同的答案,但没有任何帮助。以下是我测试过:

应用程序/模块/ module.php

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
      ), 
      'prefixes' => array(
       'Erfurt' => __DIR__ . '/../libraries/Erfurt/', 
      ), 
     ), 

    ); 
} 

如果我尝试使用爱尔福特类,PHP是无法发现它。

$erfurt = \Erfurt_App::getInstance(); 

它说

Fatal error: Class 'Erfurt_App' not found in (...)\app\module\Application\src\Application\Controller\ApplicationController.php on line 24

什么是包括在我的应用程序爱尔福特库的正确方法?

+1

降库到供应商的文件夹,并指定该库作曲家类映射自动加载应用程序的composer.json,除非你能使用作曲家 – Xerkus 2015-01-21 16:33:05

回答

2

基于@Xerkus评论,这究竟是怎么工作的:

  1. 移动Erfurt目录从应用程序/库/爱尔福特应用/供应商/爱尔福特
  2. 另外,爱尔福特需要一个较旧的Zend版本,所以我也提取了ontowiki-0.9.6-21.7z/ontowiki-0.9.6-21/libraries/Zendapp/libraries/Zend
  3. 增加了classmap t ø应用程序/ composer.json

"autoload":{ "classmap": ["vendor/Erfurt", "vendor/Zend"] }, 4. Becouse爱尔福特经由require_once 'Zend/Version.php';包括我还需要包含 - 路径添加到应用Zend类/ composer.json

"include-path": ["vendor"]

现在我可以用用爱尔福特:

$erfurt = \Erfurt_App::getInstance(); 

最后应用程序/ composer.json样子:

{ 
    "name": "zendframework/skeleton-application", 
    "description": "Skeleton Application for ZF2", 
    "license": "BSD-3-Clause", 
    "keywords": [ 
     "framework", 
     "zf2" 
    ], 
    "homepage": "http://framework.zend.com/", 
    "require": { 
     "php": ">=5.3.3", 
     "zendframework/zendframework": "2.3.*", 
     "cpliakas/git-wrapper": "~1.0" 
    }, 
    "autoload":{ 
     "classmap": ["vendor/Erfurt", "vendor/Zend"] 
    }, 
    "include-path": ["vendor"] 
} 
+0

可以指定ZF1安装库在作曲家svn回购,请参阅︰https://getcomposer.org/doc/04-schema.md#repositories,然后需要作为'“zendframework/zendframework1”:“〜1.11”' – Xerkus 2015-01-21 17:38:24

+0

但我建议你检查它是否工作与1.12.x,其中有错误修复,并在packagist中作为'zendframework/zendframework1'使用 – Xerkus 2015-01-21 17:41:31