Laravel扩展(扩展)/覆盖特定供应商软件包文件的正确方法



我参与的项目已经composer require fengqi/hanzi到供应商文件夹中,用于转换简体中文和繁体中文

对于想要查看套餐的人 https://github.com/fengqi/hanzi

在供应商文件夹中,包具有以下示例目录结构:

vendor/
--hanzi/
----src/
------Hanzi.php
------HanziDict.php
------Pinyin.php

我想修改的特定文件HanziDict.php有一个非常简单的代码结构:

<?php namespace fengqiHanzi;
return array (
'啊' => '啊',
...
...
'sample char A'=>'sample char B'
);

该软件包的 github 存储库建议,如果我发现字典中缺少某些字符,我可以在 php 文件中插入任何"char C => char D"。

但我相信我不应该直接将代码放在供应商文件夹中,因为它将在更新后被覆盖。 所以,我的问题是如何在 Laravel 中正确覆盖/扩展此文件(例如在数组中插入"char C => char D"(。

我已经阅读并知道如何在供应商文件夹之外正确扩展类,但没有找到有关其他类型的 php 文件的任何有用信息。我想知道是否有某些方法或规则来处理此类文件。

理想情况下,我想实现以下目标: 在供应商文件夹之外,我有一个扩展的ExtraHanziDict.php。因此,它始终可以建立在供应商的指示.php之上。

以下链接是供应商类代码(只有较少的简单函数来读取字典和转换字符( https://github.com/fengqi/hanzi/blob/master/src/Hanzi.php(为抛出代码道歉(

不幸的是,在这种情况下,没有简单的方法来更改字典。正如您正确猜测的那样,您永远不应该更改供应商文件夹的内容,因为它没有提交到版本控制。 在您的特定情况下,您可以做的是:

  1. 要求存储库管理员添加一个 api,允许您在运行时添加新字典。
  2. 分叉存储库,更改所需的内容,然后改用它(请参阅使用 composer 加载自定义 git 存储库(。如果您认为您的更改对其他人有用,请在原始存储库上打开拉取请求。
  3. 您链接的存储库上没有太多逻辑。您添加到composer.json文件中的每个包都是一个负担,不属于您的代码,您必须盲目地推入(如果在某个时候存储库被黑客入侵并且隐藏了一些恶意代码怎么办?只需创建自己的服务即可执行如此简单的任务。

最新更新