2038 UuidV7 fix

main
Robert 3 weeks ago
parent c3a97ec616
commit 38d2a0582b
  1. 4
      src/Framework/BbCodeParser.php
  2. 9
      src/Framework/Uuids/UuidV7.php

@ -100,7 +100,7 @@ final class BbCodeParser
'content' => '$1'
],
'listitem' => [
'pattern' => '/\[\*\](.*)/',
'pattern' => '/\[li\](.*?)\[\/li\]/s',
'replace' => '<li>$1</li>',
'content' => '$1'
],
@ -163,7 +163,7 @@ final class BbCodeParser
}
public function parse(string $source, $caseInsensitive = null): string {
$caseInsensitive = $caseInsensitive === self::CASE_INSENSITIVE ? true : false;
$caseInsensitive = ($caseInsensitive === null) ?? true;
foreach ($this->parsers as $name => $parser) {
$pattern = ($caseInsensitive) ? $parser['pattern'] . 'i' : $parser['pattern'];

@ -8,6 +8,7 @@ declare(strict_types = 1);
* @license MIT
*/
namespace IOcornerstone\Framework\Uuids;
use DateTimeImmutable;
class UuidV7
{
@ -18,8 +19,12 @@ class UuidV7
}
public static function generateUuidV7(): string {
$timestamp = (int)(microtime(true) * 1000); // Real Unix milliseconds
$timeHex = str_pad(dechex((int)$timestamp), 12, '0', STR_PAD_LEFT);
/**
* $milliseconds = (int)(microtime(true) * 1000); // Real Unix milliseconds
*/
// The completely safe, object-oriented way (no 2038 issue ever)
$milliseconds = (int)((new DateTimeImmutable())->format('U.u') * 1000);
$timeHex = str_pad(dechex($milliseconds), 12, '0', STR_PAD_LEFT);
$randomHex = bin2hex(random_bytes(10));

Loading…
Cancel
Save