inklabs / kommerce-core

PHP shopping cart core platform
https://kommerce-laravel-demo.jamieisaacs.com/
Apache License 2.0
64 stars 14 forks source link

Using UuidInterface everywhere is painful #89

Open pdt256 opened 7 years ago

pdt256 commented 7 years ago

The Uuid and UuidInterface classes do not offer much value in kommerce-core. They are only used to generate a uuid4 value and to convert from hex to bytes using the getBytes() method.

Example command converting a string to Uuid:

AddTagToProductCommand

final class AddTagToProductCommand implements CommandInterface
{
    /** @var UuidInterface */
    private $productId;

    /** @var UuidInterface */
    private $tagId;

    /**
     * @param string $productId
     * @param string $tagId
     */
    public function __construct($productId, $tagId)
    {
        $this->productId = Uuid::fromString($productId);
        $this->tagId = Uuid::fromString($tagId);
    }

An example usage inside a Twig template from kommerce-templates:

Chaining calls to get the hex value is painful:

{{ form.hidden('productId', product.id.hex ) }}
pdt256 commented 7 years ago

I suggest we use uuid's as strings throughout kommerce-core, kommerce-templates, and kommerce-laravel projects. The repository layer would need to do the conversion from string to bytes. This would be a very large refactor.