2015-01-20 4 views
2

структуры Моего каталога выглядитРегистрация Библиотека в ZF2

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

Я хочу использовать библиотеку Эрфурта. Эрфурт не использует пространства имен, но соглашение об именах для подписчиков на уровне поставщика, например. г. 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

капли библиотеки в папку поставщика и указать композитора classmap автозагрузку для этой библиотеки в composer.json приложения, если вы не можете установить библиотеку с помощью композитора – Xerkus

ответ

2

на основе @Xerkus комментария, это, как это работает:

  1. Переведен каталог Erfurt из приложения/библиотек/Эрфурт в приложения/поставщик/Erfurt
  2. Дополнительно, Erfurt нуждается старше Zend версия, поэтому я также извлеченный ontowiki-0.9.6-21.7z/ontowiki-0.9.6-21/libraries/Zend в приложения/библиотеки/Zend
  3. Добавлено classmap т о приложение/composer.json:

"autoload":{ "classmap": ["vendor/Erfurt", "vendor/Zend"] }, 4. Becouse Erfurt включает в себя классы Zend через require_once 'Zend/Version.php'; Я также необходимо добавить include-путь к приложение/composer.json:

"include-path": ["vendor"]

Теперь я могу использовать Erfurt с:

$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 repo в композиторе, см. https://getcomposer.org/doc/04-schema.md#repositories, а затем требуется как «zendframework/zendframework1»: «~ 1.11» ' – Xerkus

+0

Но я рекомендую вам проверить, работает ли он с 1.12.x, которые имеют исправления ошибок и доступны как 'zendframework/zendframework1' в packagist – Xerkus

Смежные вопросы