在Symfony中,我正在使用TCPDF包来创建PDF文档,并通过作曲家安装它。在生产中使用类之前,我需要稍微修改TCPDF
类,因此我创建了扩展TCPDF
类MyPDF
类,该类与原始类(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"
}
}