设置扩展 TCPDF 的类


Set class that extends TCPDF

在Symfony中,我正在使用TCPDF包来创建PDF文档,并通过作曲家安装它。在生产中使用类之前,我需要稍微修改TCPDF类,因此我创建了扩展TCPDFMyPDF类,该类与原始类(Symfony-project/vendor/tecnick.com/tcpdf/tcpdf.php)存储在同一文件中。

问题是,每次我更新作曲家并安装新版本的TCPDF包时,文件tcpdf.php都会被替换,因此类MyPDF消失了。创建和存储此类类的最佳做法是什么?

你不应该在vendor/目录中工作。它仅保留用于外部代码。以下是您可以执行的操作:

  • 您可以分叉 TCPDF 存储库并应用其更改。之后,您只需使用该存储库的自己的分支。这样做的缺点是您可能会错过重要的错误修复。如果您应用于代码的补丁对任何人都很重要,也欢迎您打开拉取请求以将您的修复合并回主存储库。
  • 您可以创建一个扩展 TCPDF 类的服务。这是我使用此存储库的服务定义:

    <service id="pdfgenerator" class="TCPDF">
        <file>%kernel.root_dir%/../vendor/r1pp3rj4ck/tcpdf/tcpdf.php</file>
        <argument key="orientation">P</argument>
        <argument key="unit">mm</argument>
        <argument key="format">A4</argument>
    </service>
    

    您可以根据需要扩展此服务。

编辑:

请参阅 Github HowTo 了解如何分叉存储库。拥有自己的分支后,您可以根据需要编辑代码。完成后,您的存储库准备就绪,您只需包含自己的存储库而不是当前的 TCPDF 存储库。有关详细信息,请参阅作曲家文档。您应该在composer.json中添加这样的东西:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/..."
        }
     ],
     "require": {
         ".../tcpdf": "dev-master"
     }
 }