54 lines
1.3 KiB
PHP
54 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace lib\Core;
|
|
|
|
abstract class Entity
|
|
{
|
|
private $_origins = [];
|
|
private $_values = [];
|
|
private $_isChanged = false;
|
|
private $_changedFields = [];
|
|
|
|
protected function __construct() {} //
|
|
|
|
final public function __get($key)
|
|
{
|
|
return $this->_values[$key];
|
|
}
|
|
final public function __set($key, $value)
|
|
{
|
|
if (array_key_exists($key, $this->_values)) {
|
|
// echo "{$this->_values[$key]} !== {$value}";
|
|
if ($this->_values[$key] !== $value) {
|
|
$this->_isChanged = true;
|
|
$this->_changedFields[] = $key;
|
|
$this->_origins[$key] = $this->_values[$key];
|
|
$this->_values[$key] = $value;
|
|
}
|
|
} else {
|
|
$this->_isChanged = true;
|
|
$this->_changedFields[] = $key;
|
|
$this->_origins = $this->_values;
|
|
$this->_values[$key] = $value;
|
|
}
|
|
}
|
|
|
|
final public function isChanged()
|
|
{
|
|
return $this->_isChanged;
|
|
}
|
|
final public function clearChangedFields()
|
|
{
|
|
$this->_isChanged = false;
|
|
$this->_changedFields = $this->_values;
|
|
}
|
|
final public function getChangedFields(): array
|
|
{
|
|
return $this->_changedFields;
|
|
}
|
|
final public function getOrigins(): array
|
|
{
|
|
return $this->_origins;
|
|
}
|
|
} //Class
|