class MyClass extends \Bitrix\Sale\Order - не получается расширить класс Битрикса
Для одной из задач проекта, хотелось бы добавить несколько своих методов, расширяющих возможности стандартного класса \Bitrix\Sale\Order.
Если создавать свой класс и потом попытаться использовать:
class MyOrder extends \Bitrix\Sale\Order {
public function getMyData() {
return $this->getBasket();
}
}
$orderId = 4567;
$order = \MyOrder::load($orderId);
$order->getMyData(); // нет такого метода
То получаем ошибку, потому что $order instanceof \Bitrix\Sale\Order
Это происходит из-за того, что битрикс использует при загрузке заказа \Bitrix\Sale\Registry. Если я тоже буду использовать "Реестр":
$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
$registry->set(Registry::ENTITY_ORDER, \MyOrder::class);
$orderClassName = $registry->getOrderClassName();
$order = $orderClassName::load($orderId);
$order->getMyData(); // работает
То все работает. Но мне бы хотелось обойтись без этого \Bitrix\Sale\Registry.
\Bitrix\Sale\Registry
Этот способ помогает не ошибиться в названии нужного метода при работе с сущностями интернет-магазина в редакции, объединяющей интернет-магазин и CRM (например, «1С-Битрикс24: Интернет-магазин+CRM»).
Примечание: если в таких редакциях использовать классы обычного интернет-магазина, то могут возникнуть проблемы с работой функционала, специфичного для CRM (например, с работой роботов).
Может кто-нибудь знает как мне расширить класс Заказа Битрикс без использования Реестра?