kommerce-core
kommerce-core copied to clipboard
Using UuidInterface everywhere is painful
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:
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 ) }}
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.