symfony 2.5 使用 ClassLoader 添加 Zend_pdf
symfony 2.5 use ClassLoader to add Zend_pdf
我在 Symfony 2.5 中工作,想为 pdf 使用 zend 框架 (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();
....
但他接着说:
Attempted to load class "Zend_Pdf" from namespace "Zend\Pdf".
Did you forget a "use" statement for another namespace?
我该如何解决这个问题?
谢谢。
你应该为它注册新的命名空间
我有以下解决方案来连接 zf 库
1) zf 库位于 vendor/gamma/zf/library
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) app/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) 使 composer 更新以生成新的命名空间
5) 在 service/controller 处用作
<?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);
...
}
我在 Symfony 2.5 中工作,想为 pdf 使用 zend 框架 (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();
....
但他接着说:
Attempted to load class "Zend_Pdf" from namespace "Zend\Pdf". Did you forget a "use" statement for another namespace?
我该如何解决这个问题? 谢谢。
你应该为它注册新的命名空间
我有以下解决方案来连接 zf 库
1) zf 库位于 vendor/gamma/zf/library
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) app/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) 使 composer 更新以生成新的命名空间
5) 在 service/controller 处用作
<?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);
...
}