Php 设置扩展TCPDF的类

Php 设置扩展TCPDF的类,php,symfony,oop,Php,Symfony,Oop,在Symfony中,我使用TCPDF包创建PDF文档,并通过composer安装了它。我需要在生产中使用TCPDF类之前稍微修改一下,所以我创建了MyPDF类,它扩展了TCPDF类,并存储在与原始类相同的文件中(Symfony project/vendor/tecnick.com/TCPDF/TCPDF.php) 问题是,每次我更新composer并安装新版本的TCPDF包时,文件TCPDF.php都会被替换,所以classMyPDF就会消失。什么是创建和存储此类类的最佳实践? 不应在Bug/<

在Symfony中,我使用TCPDF包创建PDF文档,并通过composer安装了它。我需要在生产中使用
TCPDF
类之前稍微修改一下,所以我创建了
MyPDF
类,它扩展了
TCPDF
类,并存储在与原始类相同的文件中(
Symfony project/vendor/tecnick.com/TCPDF/TCPDF.php


问题是,每次我更新composer并安装新版本的TCPDF包时,文件
TCPDF.php
都会被替换,所以class
MyPDF
就会消失。什么是创建和存储此类类的最佳实践?

不应在Bug/< /Cord>目录中工作。它仅为外部代码保留。以下是您可以做的:

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


    我忘了提到我正在使用WhiteOctory包将TCPDF集成到Symfony中。因此,类文件被设置为%kernel.root_dir%/../vendor/tecnick.com/tcpdf/tcpdf.php,我只将配置中的默认类更改为MyPDF。仍然检查我的其他建议。在
    vendor/
    dir工作是非常糟糕的做法。改用叉式存储库!我不知道怎么做。还有通过composer获取更新的功能吗?但这并不能解决我的问题,因为这会破坏包更新。您询问了如何编辑外部供应商代码的最佳实践。这就是你打算这样做的方式。或者像我在回答中描述的那样扩展一项新服务。
    <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>
    
    {
        "repositories": [
            {
                "type": "vcs",
                "url": "https://github.com/..."
            }
         ],
         "require": {
             ".../tcpdf": "dev-master"
         }
     }