Chronos se concentra em fornecer objetos de data/data e hora imutáveis. Objetos imutáveis ajudam a garantir que objetos de data e hora não sejam modificados acidentalmente, mantendo os dados mais previsíveis.
Instalando com o compositor:
$ composer require cakephp/chronos
Você pode então usar o Chronos:
<?phprequire 'vendor/autoload.php';use CakeChronosChronos;printf("Agora: %s", Chronos::now());
Chronos era originalmente compatível com Carbon, mas divergiu e não estende mais as classes PHP DateTime e DateTimeImmutable.
Objetos imutáveis têm uma série de vantagens:
O uso de objetos imutáveis é sempre livre de efeitos colaterais.
Datas e horários não mudam acidentalmente em outras partes do seu código.
Com esses benefícios em mente, há algumas coisas que você precisa ter em mente ao modificar objetos imutáveis:
// Isso perderá as modificações$date = new Chronos('2015-10-21 16:29:00');$date->modify('+2 hours'); // Isso manterá as modificações$date = new Chronos ('2015-10-21 16:29:00');$data = $data->modificar('+2 horas');
PHP oferece apenas objetos datetime como parte das extensões nativas. Chronos adiciona uma série de conveniências ao objeto DateTime tradicional e introduz um objeto ChronosDate
. As instâncias ChronosDate
têm seu tempo congelado em 00:00:00
e o fuso horário definido como o fuso horário padrão do servidor. Isso os torna ideais ao trabalhar com datas de calendário, pois os componentes de tempo sempre corresponderão.
use CakeChronosChronosDate;$today = new ChronosDate();echo $today;// Saídas '2015-10-21'echo $today->modify('+3 hours');// Saídas '2015-10-21'
Assim como as instâncias de Chronos
, os objetos ChronosDate
também são imutáveis .
Uma documentação mais descritiva pode ser encontrada em book.cakephp.org/chronos/3/en/.
A documentação da API pode ser encontrada em api.cakephp.org/chronos.