for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace WebComplete\core\utils\traits;
use function WebComplete\core\utils\typecast\cast;
trait TraitData
{
private $data = [];
/**
* @return array
*/
abstract public static function fields(): array;
* @param array $data
* @param bool $update
public function mapFromArray(array $data, bool $update = false)
if (!$update) {
$this->data = [];
}
foreach ($data as $field => $value) {
$this->set($field, $value);
public function mapToArray(): array
$result = [];
$fields = \array_keys(static::fields());
foreach ($fields as $field) {
$result[$field] = $this->get($field);
return $result;
* @param $name
*
* @return mixed|null
public function __get($name)
return $this->get($name);
* @param $value
public function __set($name, $value)
$this->set($name, $value);
* @return bool
public function __isset($name)
return isset($this->data[$name]);
* @param string $field
public function set(string $field, $value)
$fields = static::fields();
if (isset($fields[$field])) {
$this->data[$field] = cast($value, $fields[$field]);
* @param null $default
$default
null
public function get(string $field, $default = null)
return $this->data[$field] ?? $default;
public function has(string $field): bool
return isset(static::fields()[$field]);