romanpitak/dotMailer-API-v2-PHP-client

View on GitHub
src/DataTypes/Guid.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 *
 *
 * @author Roman Piták <roman@pitak.net>
 *
 */


namespace DotMailer\Api\DataTypes;


final class Guid implements IDataType
{

    /** @var string */
    private $value;

    public function __construct($value)
    {

        $pattern = '/[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/';
        if (1 !== preg_match($pattern, $value)) {
            throw new InvalidValueException();
        }

        $this->value = $value;
    }

    /*
     * ========== IDataType ==========
     */

    public function __toString()
    {
        return (string)$this->value;
    }

    public function toArray()
    {
        return (string)$this;
    }

    public function toJson()
    {
        return json_encode($this->value);
    }
}