• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketitem.php
  • Класс: BitrixSaleBasketItem
  • Вызов: BasketItem::createClone
public function createClone(SplObjectStorage $cloneEntity)
{
	if ($this->isClone() && $cloneEntity->contains($this))
	{
		return $cloneEntity[$this];
	}

	/** @var BasketItem $basketItemClone */
	$basketItemClone = parent::createClone($cloneEntity);

	/** @var InternalsFields $calculatedFields */
	if ($calculatedFields = $this->calculatedFields)
	{
		$basketItemClone->calculatedFields = $calculatedFields->createClone($cloneEntity);
	}

	if (!$cloneEntity->contains($this))
	{
		$cloneEntity[$this] = $basketItemClone;
	}

	/** @var BasketPropertiesCollection $propertyCollection */
	if ($propertyCollection = $this->getPropertyCollection())
	{
		if (!$cloneEntity->contains($propertyCollection))
		{
			$cloneEntity[$propertyCollection] = $propertyCollection->createClone($cloneEntity);
		}

		if ($cloneEntity->contains($propertyCollection))
		{
			$basketItemClone->propertyCollection = $cloneEntity[$propertyCollection];
		}
	}

	/** @var ReserveQuantityCollection $reservedCollection */
	if ($reservedCollection = $this->getReserveQuantityCollection())
	{
		if (!$cloneEntity->contains($reservedCollection))
		{
			$cloneEntity[$reservedCollection] = $reservedCollection->createClone($cloneEntity);
		}

		if ($cloneEntity->contains($reservedCollection))
		{
			$basketItemClone->reserveQuantityCollection = $cloneEntity[$reservedCollection];
		}
	}

	if ($this->isBundleParent())
	{
		/** @var BundleCollection $bundleCollection */
		if ($bundleCollection = $this->getBundleCollection())
		{
			if (!$cloneEntity->contains($bundleCollection))
			{
				$cloneEntity[$bundleCollection] = $bundleCollection->createClone($cloneEntity);
			}

			if ($cloneEntity->contains($bundleCollection))
			{
				$basketItemClone->bundleCollection = $cloneEntity[$bundleCollection];
			}
		}
	}

	return $basketItemClone;
}