我想知道什么是最好的方式包括第三方php文件在symfony2。我正在使用不同的php-ajax包来上传我的symfony2应用程序中的文件。该软件包提供了一些我需要在我的symfony控制器中使用的php oops代码。我正在我的控制器中创建该代码的对象。所以我想知道我可以放置第三方代码或文件的位置,以及如何在symfony2控制器中包含或创建该代码的对象。我们是否也在symfony2中使用require或include?如果这是唯一的方法。最好的方法包括第三方文件与Symfony2
回答
我不太确定尝试将名称空间添加到第三方库。例如,Twig不使用名称空间。而且真的没有必要。考虑一个例子,你想使用Zend_Framework 1库中的PDF组件。
在您的应用程序/ 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'
);
在这一点上,我们应该能够创建控制器内部的第三部分对象,而让自动加载系统以寻求照顾,包括类:
$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);
你必须使用\来解决缺乏命名空间的。
这个答案确实假设你的第三部分库遵循或多或少的标准类命名约定。如果它有自己的自动加载功能,那么也可以从autolaod.php中调用它。如果您不想使用自动加载,那么只需设置包含路径并将其包含在内。
很好的答案!我曾经有过这种情况,并且完全像这样解决了它... – 2012-04-04 09:18:05
@Hakan Deryal。谢谢你的回应,你能告诉我,如果我在供应商创建一个文件夹作为第三方,并将我的第三方文件放置在那里,供应商/第三方/ myfile.php我怎么能包括它在我的Acme捆绑。 – ScoRpion 2012-04-04 09:56:14
第三方应用程序是否使用名称空间?你可以通过在文件顶部寻找一行,如'namespace ....'来检查它。 – 2012-04-04 10:44:35
- 1. CMake的 - 包括第三方文件
- 2. 什么是最好的方式来包装第三方类c#
- 3. 不能包括第三方jar文件与Maven的Android的插件
- 4. 包括第三方制图插件与ExtJs 5
- 5. 无法安装第三方APK文件
- 6. 与Git的Symfony2项目:最佳方法?
- 7. 最好的方法包括在页面(JavaScript中,AJAX和jQuery)
- 8. 我如何包括第三方物流文件在我的模块的Drupal 7
- 9. 包括SQLConnection在内的方法 - 好方法?
- 10. 无法配置Symfony(第三方)包
- 11. Doxygen包括方法两次doc文件
- 12. Symfony2包与PSR-0兼容的第三方库有什么区别?
- 13. 最好的方法,从文件
- 14. 最好的文件上传方法
- 15. 包含第三方Jars ANT
- 16. 包装第三方DLL
- 17. 抽象第三方JavaScript API的好方法?
- 18. 防止第三方软件包导入
- 19. Symfony2:最好的地方把bussines逻辑
- 20. 从第三方导入源文件的首选方法?
- 21. 好的做法,包括源文件
- 22. 什么是将第三方异步API与Cap'n Proto RPC集成的好方法?
- 23. 包括第三方非GitHub的库在GitHub上
- 24. Autotools:包括一个预编译的第三方库
- 25. 包括第三方库在我的git仓库
- 26. 无法加载Symfony2中的第三方类
- 27. 最好方法?
- 28. 使用第三方exe打包自定义DLL的方法
- 29. 与类如何包括重新定义的方法包括
- 30. 微风与第三方API
这是正确的方法。如果一个库没有遵循任何命名约定,我会建议开始使用composer([repo](https://github.com/composer/composer),[symfony](https://github.com/symfony/symfony) -标准))。它允许映射任何库,使自动加载成为可能,即使这些库不遵循约定。 – gilden 2012-04-05 07:47:41