Skip to content

fix: Payment\Sort использует msDelivery вместо msPayment в type hints #175

@biz87

Description

@biz87

Описание

В src/Processors/Settings/Payment/Sort.php метод sort() имеет неправильные type hints параметров:

// Текущее (неправильно):
public function sort(msDelivery $source, msDelivery $target)

// Должно быть:
public function sort(msPayment $source, msPayment $target)

Класс $classKey = msPayment::class, но type hints скопированы из Delivery/Sort.php.

Почему не ломается в runtime

xPDO getObject() возвращает xPDOObject, и PHP не проверяет type hints строго при передаче — msPayment и msDelivery оба наследуют от xPDOSimpleObject. Но это скрытый баг — IDE и PHPStan не видят реальный тип.

Что нужно сделать

  1. Изменить type hints: sort(msPayment $source, msPayment $target)
  2. Исправить PHPDoc @param
  3. Проверить что метод нигде не вызывается с явным msDelivery
  4. Убедиться что аналогичной проблемы нет в Status/Sort.php (использует msOrderStatus — корректно)

Обнаружено в PR #174.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions