【问题标题】:In Symfony2 where do I put e.g. TCPDF?在 Symfony2 中,我在哪里放置例如TPDF?
【发布时间】: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 的简单接口的详细信息。

标签: php symfony tcpdf


【解决方案1】:

如果您使用 deps 来管理供应商库,那么您应该为这些库添加 git 存储库。

对于 TCPDF,您可以使用:

[TCPDF]
    git=git://tcpdf.git.sourceforge.net/gitroot/tcpdf/tcpdf
    target=/tcpdf

如果您有其他库不在公共存储库中,那么您可能希望将它们提交到您自己的存储库中。

Composer 也是如此。只是添加 non-packagist repo 的语法不同。

【讨论】:

  • 马特:谢谢你的回答。您是如何获得 TCPDF 的 Git 存储库的。您是否从 sourceforge.net/apps/trac/sourceforge/wiki/Git 自己构建了 URL?使用它会比 github.com/tcpdf/tcpdf 更好吗?我已经对其进行了编辑的另一个库(Paypal,我购买了许可证的封闭源代码),所以我想我会在我自己的源代码树中作为服务(在 DependencyInjection 中)包含,除非你另有想法。
  • SourceForge 一是开发项目的地方。 GitHub 只是一面镜子。任何一个都可以使用。
  • 只是为了完成马特的回答,一旦您将 TCPDF 包含在您的部门和更新的供应商中,下一步是:IN app/autoload.php ADD 'TCPPDF' => DIR.'/../vendor/tcpdf', TO $loader->registerPrefixes(array());然后您可以在控制器或服务中使用它,例如$pdf = 新 \TCPPDF();
  • ..它在本地对我有用,但在使用 Capifony 和实时服务器上的符号链接目录时不起作用。有关解决此问题的方法,请参见此处:stackoverflow.com/questions/9253477/…
猜你喜欢
  • 2012-08-25
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
相关资源
最近更新 更多