1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
<?php
namespace Tev\Field\Model;
use Carbon\Carbon;
/**
* Date field.
*
* Provides access to the data in string form and as a Carbon object.
*/
class DateField extends AbstractField
{
/**
* Carbon object for date.
*
* @var \Carbon\Carbon
*/
private $date;
/**
* Constructor.
*
* @param array $data Underlying field data
* @return void
*/
public function __construct(array $data)
{
parent::__construct($data);
if ($this->base['value']) {
$this->date = Carbon::createFromFormat($this->base['return_format'], $this->base['value']);
} else {
$this->data = null;
}
$this->format = $this->base['display_format'];
}
/**
* Get this date as a string.
*
* Empty string if no date is set.
*
* @return string
*/
public function getValue()
{
if ($this->date) {
return $this->date->format($this->format);
} else {
return '';
}
}
/**
* Get this date as a Carbon object.
*
* Returns null if no date is set.
*
* @return \Carbon\Carbon|null
*/
public function date()
{
return $this->date;
}
/**
* Format the date, or return its format.
*
* @param string|null $newFormat If string, will set format. If omitted,
* will return format
* @return string|\Tev\Field\Model\DateField Format or this, for chaining
*/
public function format($newFormat = null)
{
if ($newFormat === null) {
return $this->format;
}
$this->format = $newFormat;
return $this;
}
}