Я копирую файл поставщика в каталог переопределения поставщика за пределами каталог поставщика и измените его в соответствии со своими потребностями. Затем измените композитор.json, добавив исходный файл поставщика в «exclude-from-classmap», и добавьте мой файл в «files».
пример:
Код: Выделить всё
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/",
"Routes\\Web\\": "routes/web/"
},
"exclude-from-classmap": [
"vendor/area17/twill/src/Models/Model.php",
"vendor/area17/twill/src/Models/Media.php"
],
"files": [
"vendor-override/twill/Model.php",
"vendor-override/twill/Media.php"
]
},
Если я запустил Composer dump-auto, я получаю следующую ошибку:
Код: Выделить всё
PHP Fatal error: Cannot declare class A17\Twill\Models\Model, because the name is already in use in C:\Database\SourceDB\modulbau-shop\vendor-override\twill\Model.php on line 23
Вместо этого я получаю следующую ошибку:
Код: Выделить всё
In Media.php line 12:
[Error]
Class "A17\Twill\Models\Model" not found
Exception trace:
at C:\Database\SourceDB\modulbau-shop\vendor-override\twill\Media.php:12
require() at C:\Database\SourceDB\modulbau-shop\vendor\composer\autoload_real.php:41
{closure}() at C:\Database\SourceDB\modulbau-shop\vendor\composer\autoload_real.php:45
p>
Я попробовал добавить явный импорт (оператор use в медиа-файл, но это не помогло. Я все равно получаю ошибку «Класс «A17\Twill\Models\Model» не найден»). )
vendor-override/twill/Media.php
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/79278052/composer-vendor-override-cannot-declare-class-because-the-name-is-already-in-u[/url]