public static function uuid()
    {
        $random = function_exists('random_int') ? 'random_int' : 'mt_rand';

        return sprintf(
            '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            // 32 bits for "time_low"
            $random(0, 65535),
            $random(0, 65535),
            // 16 bits for "time_mid"
            $random(0, 65535),
            // 12 bits before the 0100 of (version) 4 for "time_hi_and_version"
            $random(0, 4095) | 0x4000,
            // 16 bits, 8 bits for "clk_seq_hi_res",
            // 8 bits for "clk_seq_low",
            // two most significant bits holds zero and one for variant DCE1.1
            $random(0, 0x3fff) | 0x8000,
            // 48 bits for "node"
            $random(0, 65535),
            $random(0, 65535),
            $random(0, 65535)
        );
    }