2015-04-29 40 views
0

我在Symfony的2.5工作,并要使用PDF(zend_pdf)Zend框架的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” 是。 你忘记了另一个命名空间的“使用”语句吗?

我该如何解决这个问题? 谢谢。

回答

1

要注册新的命名空间为它

我有后续解决方案与ZF库

1)ZF库位于供应商/伽玛/ 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

是的,正确的 - 添加了包含我的示例的路径 –