最佳方法包含Symfony2的第三方文件

Sco*_*ion 6 symfony

我想知道在symfony2中包含第三方php文件的最佳方法是什么.我使用不同的php - ajax包在我的symfony2应用程序中上传文件.该软件包为我提供了一些我需要在我的symfony控制器中使用的php oops代码.我在我的控制器中创建该代码的对象.所以我想知道我可以在哪里放置第三方代码或文件,以及如何在我的symfony2控制器中包含或创建该代码的对象.我们是否也在symfony2中使用require或include.如果那是唯一的方法.

Cer*_*rad 7

我不太确定尝试将命名空间添加到第三方库.例如,Twig不使用名称空间.而且根本没有必要.例如,考虑使用Zend_Framework 1库中的PDF组件的情况.

在你的app/autoload.php文件中你会做类似的事情:

$loader->registerPrefixes(array(
    'Twig_Extensions_' => $ws . 'Symfony/vendor/twig-extensions/lib',
    'Twig_'            => $ws . 'Symfony/vendor/twig/lib',
    'Zend_'            => $ws . 'ZendFramework-1.0.0/library',
));

// And since Zend internally uses require/include we need to set an include path
ini_set('include_path','.' .

    PATH_SEPARATOR . $ws . 'ZendFramework-1.0.0/library'

);
Run Code Online (Sandbox Code Playgroud)

此时,我们应该能够在控制器内部创建第三部分对象,同时让自动加载系统负责查找和包含类:

    $page = new \Zend_Pdf_Page(\Zend_Pdf_Page::SIZE_A4);
    $doc->pages[] = $page;

    $font1 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_HELVETICA);
    $font2 = \Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_COURIER_BOLD);
Run Code Online (Sandbox Code Playgroud)

你必须使用\来解决缺少命名空间的问题.

这个答案确实假设您的第三方库遵循或多或少的标准类命名约定.如果它有自己的自动加载功能,那么也可以从autolaod.php中调用它.如果你根本不想使用自动加载,那么只需设置包含路径并包含.