Контекст
Обе проблемы — pre-existing в beta; их сделал видимыми новый PHPStan-гейт из #433 (сейчас они забайслайнены в phpstan-baseline.neon, поэтому CI зелёный). #433 их не вносил и не чинил — только задокументировал. Ниже — что чинить.
1. ⚠️ Латентный фатал: MiniShop3::loadCustomClasses() не существует
Файл: core/components/minishop3/src/Services/Order/OrderStatusService.php:407
protected function getPaymentLink(mixed $msPayment, msOrder $msOrder): string
{
$class = $msPayment->get('class');
if (!empty($class)) {
$this->ms3->loadCustomClasses('payment'); // ← метода нет
if (class_exists($class)) {
...
У класса MiniShop3\MiniShop3 нет метода loadCustomClasses() и нет __call. Значит любой вызов getPaymentLink() с непустым class платёжки → Error: Call to undefined method MiniShop3\MiniShop3::loadCustomClasses() — фатал в пути генерации ссылки на оплату. Похоже на наследие MS2 (там метод был).
Baseline-запись:
message: '#^Call to an undefined method MiniShop3\\MiniShop3\:\:loadCustomClasses\(\)\.$#'
Что делать: восстановить загрузку кастомных классов платёжек (эквивалент MS2 loadCustomClasses) либо заменить на актуальный механизм автозагрузки/резолва класса платёжки. Затем убрать запись из baseline.
Смежно с #458 (payment_link в письме о новом заказе) — этот путь пересекается; проверить, не закрывает ли #458 эту строку.
2. Мёртвая регистрация сервиса ms3_config_manager
Файл: core/components/minishop3/src/ServiceRegistry.php:47
'ms3_config_manager' => [
'class' => \MiniShop3\Services\ConfigManager::class, // ← класса нет
'interface' => null,
],
Класс MiniShop3\Services\ConfigManager не существует (распилен на FilterConfigManager / ComboConfigManager / GridConfigManager), а запись в реестре осталась. Ключ ms3_config_manager не резолвится нигде (grep services->get('ms3_config_manager') → пусто), реестр ленивый → сейчас не фаталит. Безобидный мусор, но грязь.
Baseline-запись:
message: '#^Class MiniShop3\\Services\\ConfigManager not found\.$#'
Что делать: удалить мёртвую запись из ServiceRegistry::$defaultServices и убрать её из baseline.
Acceptance
Контекст
Обе проблемы — pre-existing в
beta; их сделал видимыми новый PHPStan-гейт из #433 (сейчас они забайслайнены вphpstan-baseline.neon, поэтому CI зелёный). #433 их не вносил и не чинил — только задокументировал. Ниже — что чинить.1.⚠️ Латентный фатал:
MiniShop3::loadCustomClasses()не существуетФайл:
core/components/minishop3/src/Services/Order/OrderStatusService.php:407У класса
MiniShop3\MiniShop3нет методаloadCustomClasses()и нет__call. Значит любой вызовgetPaymentLink()с непустымclassплатёжки →Error: Call to undefined method MiniShop3\MiniShop3::loadCustomClasses()— фатал в пути генерации ссылки на оплату. Похоже на наследие MS2 (там метод был).Baseline-запись:
Что делать: восстановить загрузку кастомных классов платёжек (эквивалент MS2
loadCustomClasses) либо заменить на актуальный механизм автозагрузки/резолва класса платёжки. Затем убрать запись из baseline.2. Мёртвая регистрация сервиса
ms3_config_managerФайл:
core/components/minishop3/src/ServiceRegistry.php:47Класс
MiniShop3\Services\ConfigManagerне существует (распилен наFilterConfigManager/ComboConfigManager/GridConfigManager), а запись в реестре осталась. Ключms3_config_managerне резолвится нигде (grep services->get('ms3_config_manager')→ пусто), реестр ленивый → сейчас не фаталит. Безобидный мусор, но грязь.Baseline-запись:
Что делать: удалить мёртвую запись из
ServiceRegistry::$defaultServicesи убрать её из baseline.Acceptance
getPaymentLink()не фаталит (восстановлен резолв класса платёжки), покрыт тестомms3_config_managerphpstan-baseline.neon,composer stanостаётся зелёным