【发布时间】:2012-06-04 14:23:30
【问题描述】:
我正在使用 Symfony 2.0,并且了解第三方库位于 /vendor 中。我有两个正在使用的第三方类,一个是 TCPDF,另一个是 Paypal 类。两者都没有正式的 Symfony2 Bundles。
所以我按照此处的说明对它们进行了命名空间并使它们在 /vendor 中可用:
Add third party libraries to Symfony 2
这可行,我可以从我的控制器访问它们。但是,我正在重新考虑这是否正确。每当我这样做..
php bin/vendors install --reinstall
..那些自定义类消失了,因为它们在“deps”中没有 Git 存储库。这引起了实际问题,例如尝试部署时,例如宝塔盒子。我有一种强烈的直觉,即“第三方”的代码更接近我的应用程序的代码。
如果是真的,应该这样:
- 在 src/MyCompany/MyBundle/Controller/tcpdf.php 中坐在我的控制器旁边
- 在 src/MyCompany/MyBundle/DependencyInjection/tcpdf.php 中使用我的其他自定义编写服务
- 进入我的包下它自己的目录:src/MyCompany/MyBundle/TCPPDF/tcpdf.php
如果我将这两个类从 /vendor 移动到上述其中之一,我会从带有“use”语句的控制器访问它,还是需要在“services.yml”中定义它?
我希望这不是讨论或意见的问题,而是我错过的一些指导或我不知道的最佳实践,更有经验的 Symfony2 开发人员会知道。
在 Symfony 2.1 准备好之前切换到 Composer 是否明智?
感谢阅读。
【问题讨论】:
-
也许您应该考虑使用开源包,例如这个 TCPDF 包:github.com/ioalessio/IoTcpdfBundle 和这个支付包:github.com/schmittjoh/JMSPaymentPaypalBundle
-
IoTcpdf 似乎主要是一个 Tcpdf 桥,用于将 Twig 模板输出为 PDF:不是我需要的。它本身不包含 Tcpdf,它说手动将 Tcpdf 放入您的供应商目录中,这是我试图避免的。马特的建议更直接相关。我今天查看了 JMSPayment,虽然我很想有朝一日使用它,但它有很多依赖项,并且文档没有提供有关如何将其用作 Paypal API 的简单接口的详细信息。