设置扩展TCPDF的类

时间:2013-11-15 22:57:43

标签: php symfony oop

在Symfony中我使用TCPDF包创建PDF文档,我通过composer安装它。在生产中使用它之前,我需要稍微修改TCPDF类,因此我创建了扩展MyPDF类的TCPDF类,并将其存储在与原始类相同的文件中({{ 1}})。

问题是,每次更新作曲家和安装新版本的TCPDF软件包时,文件Symfony-project/vendor/tecnick.com/tcpdf/tcpdf.php都会被替换,因此类tcpdf.php会消失。什么是创建和存储这些类的最佳实践?

1 个答案:

答案 0 :(得分:1)

您不应该在vendor/目录中工作。它仅为外部代码保留。您可以这样做:

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

    <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 docs for more information。 您应该将这样的内容添加到composer.json

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