2015-04-29 2 views
0

Я работаю в Symfony 2.5 и хотите использовать Zend Framework, для PDF (Zend_PDF)Symfony 2.5 Использование ClassLoader добавить Zend_PDF

Я попробовал загрузчик классов, но я, вероятно, сделать что-то неправильно, потому что он не работает (конечно) ...

Я не знаю, где добавить мой загрузчик классов ... Я думал, что в autoload.php, но я бы не знал, как ... это мой autoload.php, стандартный:

<?php 
use Doctrine\Common\Annotations\AnnotationRegistry; 
use Composer\Autoload\ClassLoader; 
/** 
* @var ClassLoader $loader 
*/ 
$loader = require __DIR__.'/../vendor/autoload.php'; 

AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 

return $loader; 

Я попытался добавить его в свой контроллер следующим образом:

use Symfony\Component\ClassLoader\ClassLoader; 

/** 
* @Template() 
*/ 
public function pdfAction() 
{ 
    $loader = new ClassLoader(); 
    $loader->addPrefix('Zend', __DIR__.'/vendor/zf/library'); 
    $loader->register(); 

    $pdf = new \Zend\Pdf\Zend_Pdf(); 
    .... 

Но потом он говорит:

Пытался загрузить класс "Zend_Pdf" из пространства имен "Zend \ Pdf". Вы забыли инструкцию «use» для другого пространства имен?

Как это решить? спасибо.

ответ

1

вы должны зарегистрировать новое пространство имен для него

У меня есть последующее решение для подключения ОГНЯ библиотеки

1) ZF Библиотека расположена на поставщике/гамма/З.Ф./библиотеке

2) venvodor/ZF /composer.json

{ 
     "name": "gamma/zf", 
     "type": "symfony-bundle", 
     "autoload": { 
         "psr-0": { "Zend_": "" } 
        }, 
     "target-dir": "",   
     "require": { 
      "php": ">=5.3.3", 
      "symfony/symfony": "~2.1" 
     } 
} 

3) приложение/autoload.php

<?php 
    use Doctrine\Common\Annotations\AnnotationRegistry; 

    $loader = include __DIR__.'/../vendor/autoload.php'; 
    $loader->add("Zend_", __DIR__.'/../vendor/gamma/zf/library'); 
set_include_path(__DIR__.'/../vendor/gamma/zf/library'.PATH_SEPARATOR.get_include_path()); 

4) сделать обновление композитора для создания нового пространства имен

5) использовать при обслуживании/контроллер в качестве

<?php 

namespace MyApp\SomeBundle\Services; 

use Symfony\Component\DependencyInjection\ContainerInterface; 

use Zend_XmlRpc_Client; 

public function __construct(ContainerInterface $container, $cookiePath) 
{ 
... 
$this->xmlRpc = new Zend_XmlRpc_Client($zendUrl->getUri(), $server); 
... 
} 
+0

спасибо, за то, что ясно! он работал, я добавил set_include_path (__DIR __. '/ ../vendor/zend/library /:../ application/classes /:../ application/classes/excpetions /:../ application/forms /'); потому что я использовал zf1 и там, где проблемы с пространствами имен. –

+0

Да, справа - добавлен путь к моему примеру –

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