Entity
$oEntity->getMyProperty()вернет данные по ключу/полю my_property
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aData | array | Данные сущности, на этот массив мапятся методы set* и get* | Entity |
aValidateErrors | array | Список ошибок валидации в разрезе полей, например | Entity |
aValidateRules | array | Список правил валидации полей | Entity |
sPrimaryKey | null|string | Имя поля с первичным ключом в БД | Entity |
sValidateScenario | string | Сценарий валиадции полей | Entity |
Public Methods
Method | Description | Defined By |
---|---|---|
Init() | Метод инициализации сущности, вызывается при её создании | Entity |
_Validate() | Выполняет валидацию данных сущности | Entity |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | Entity |
__construct() | Если передать в конструктор ассоциативный массив свойств и их значений, то они автоматом загрузятся в сущность | Entity |
_addValidateError() | Добавляет для поля ошибку в список ошибок | Entity |
_clearValidateErrors() | Очищает список всех ошибок или для конкретного поля | Entity |
_createValidators() | Создает и возвращает список валидаторов для сущности | Entity |
_getData() | Получает массив данных сущности | Entity |
_getDataArray() | Рекурсивное преобразование объекта и вложенных объектов в массив | Entity |
_getDataOne() | Возвращает данные по конкретному полю | Entity |
_getPrimaryKey() | Получение первичного ключа сущности (ключ, а не значение!) | Entity |
_getPrimaryKeyValue() | Возвращает значение первичного ключа/поля | Entity |
_getValidateError() | Возвращает первую ошибку для поля или среди всех полей | Entity |
_getValidateErrors() | Возвращает список ошибок для всех полей или одного поля | Entity |
_getValidateScenario() | Возвращает текущий сценарий валидации | Entity |
_getValidators() | Возвращает список валидаторов с учетом текущего сценария | Entity |
_hasValidateErrors() | Проверяет есть ли ошибки валидации | Entity |
_setData() | Устанавливает данные сущности | Entity |
_setValidateScenario() | Устанавливает сценарий валидации | Entity |
Property Details
Данные сущности, на этот массив мапятся методы set* и get*
Список ошибок валидации в разрезе полей, например
array( 'title' => array('error one','error two'), 'name' => array('error one','error two'), )
Список правил валидации полей
See Also
Имя поля с первичным ключом в БД
Сценарий валиадции полей
See Also
Method Details
public void Init()
|
public function Init() {
}
Метод инициализации сущности, вызывается при её создании
public bool _Validate(null|array $aFields=NULL, bool $bClearErrors=true)
| ||
$aFields | null|array | Список полей для валидации, если null то по всем полям |
$bClearErrors | bool | Очищать или нет стек ошибок перед валидацией |
{return} | bool |
public function _Validate($aFields=null, $bClearErrors=true) {
if($bClearErrors) {
$this->_clearValidateErrors();
}
foreach($this->_getValidators() as $validator) {
$validator->validateEntity($this,$aFields);
}
return !$this->_hasValidateErrors();
}
Выполняет валидацию данных сущности Если $aFields=null, то выполняется валидация по всем полям из $this->aValidateRules, иначе по пересечению
public mixed __call(string $sName, array $aArgs)
| ||
$sName | string | Имя метода |
$aArgs | array | Аргументы |
{return} | mixed |
public function __call($sName,$aArgs) {
$sType=strtolower(substr($sName,0,3));
if (!strpos($sName,'_') and in_array($sType,array('get','set'))) {
$sKey=func_underscore(substr($sName,3));
if ($sType=='get') {
if (isset($this->_aData[$sKey])) {
return $this->_aData[$sKey];
} else {
if (preg_match('/Entity([^_]+)/',get_class($this),$sModulePrefix)) {
$sModulePrefix=func_underscore($sModulePrefix[1]).'_';
if (isset($this->_aData[$sModulePrefix.$sKey])) {
return $this->_aData[$sModulePrefix.$sKey];
}
}
}
return null;
} elseif ($sType=='set' and array_key_exists(0,$aArgs)) {
$this->_aData[$sKey]=$aArgs[0];
}
} else {
return Engine::getInstance()->_CallModule($sName,$aArgs);
}
}
Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля Также производит обработку методов set* и get*
See Also
public void __construct(array|false $aParam=false)
| ||
$aParam | array|false | Ассоциативный массив данных сущности |
public function __construct($aParam = false) {
$this->_setData($aParam);
$this->Init();
}
Если передать в конструктор ассоциативный массив свойств и их значений, то они автоматом загрузятся в сущность
public void _addValidateError(string $sField, string $sError)
| ||
$sField | string | Поле сущности |
$sError | string | Сообщение об ошибке |
public function _addValidateError($sField,$sError) {
$this->aValidateErrors[$sField][]=$sError;
}
Добавляет для поля ошибку в список ошибок
public void _clearValidateErrors(null|string $sField=NULL)
| ||
$sField | null|string | Поле сущности |
public function _clearValidateErrors($sField=null) {
if($sField===null) {
$this->aValidateErrors=array();
} else {
unset($this->aValidateErrors[$sField]);
}
}
Очищает список всех ошибок или для конкретного поля
public array _createValidators()
| ||
{return} | array |
public function _createValidators() {
$aValidators=array();
foreach($this->aValidateRules as $aRule) {
if(isset($aRule[0],$aRule[1])) {
$aValidators[]=$this->Validate_CreateValidator($aRule[1],$this,$aRule[0],array_slice($aRule,2));
} else {
throw new Exception(get_class($this).' has an invalid validation rule');
}
}
return $aValidators;
}
Создает и возвращает список валидаторов для сущности
See Also
public array _getData(array|null $aKeys=array (
))
| ||
$aKeys | array|null | Список полей, данные по которым необходимо вернуть, если не передан, то возвращаются все данные |
{return} | array |
public function _getData($aKeys=array()) {
if(!is_array($aKeys) or !count($aKeys)) return $this->_aData;
$aReturn=array();
foreach ($aKeys as $key) {
if(array_key_exists($key,$this->_aData)) {
$aReturn[$key] = $this->_aData[$key];
}
}
return $aReturn;
}
Получает массив данных сущности
public array _getDataArray()
| ||
{return} | array |
public function _getDataArray() {
$aResult = array();
foreach ($this->_aData as $sKey => $sValue) {
if (is_object($sValue) && $sValue instanceOf Entity) {
$aResult[$sKey] = $sValue->_getDataArray();
} else {
$aResult[$sKey] = $sValue;
}
}
return $aResult;
}
Рекурсивное преобразование объекта и вложенных объектов в массив
public null|mixed _getDataOne(string $sKey)
| ||
$sKey | string | Название поля, например 'my_property' |
{return} | null|mixed |
public function _getDataOne($sKey) {
if(array_key_exists($sKey,$this->_aData)) {
return $this->_aData[$sKey];
}
return null;
}
Возвращает данные по конкретному полю
public null|string _getPrimaryKey()
| ||
{return} | null|string |
public function _getPrimaryKey() {
if (!$this->sPrimaryKey) {
if (isset($this->_aData['id'])) {
$this->sPrimaryKey = 'id';
} else {
// Получение primary_key из схемы бд (пока отсутствует)
$this->sPrimaryKey = 'id';
}
}
return $this->sPrimaryKey;
}
Получение первичного ключа сущности (ключ, а не значение!)
See Also
public mixed|null _getPrimaryKeyValue()
| ||
{return} | mixed|null |
public function _getPrimaryKeyValue() {
return $this->_getDataOne($this->_getPrimaryKey());
}
Возвращает значение первичного ключа/поля
public string|null _getValidateError(null|string $sField=NULL)
| ||
$sField | null|string | Поле сущности |
{return} | string|null |
public function _getValidateError($sField=null) {
if ($sField===null) {
foreach($this->_getValidateErrors() as $sFieldKey=>$aErros) {
return reset($aErros);
}
} else {
return isset($this->aValidateErrors[$sField]) ? reset($this->aValidateErrors[$sField]) : null;
}
}
Возвращает первую ошибку для поля или среди всех полей
public array _getValidateErrors(null|string $sField=NULL)
| ||
$sField | null|string | Поле сущности, если нет, то возвращается для всех полей |
{return} | array |
public function _getValidateErrors($sField=null) {
if($sField===null) {
return $this->aValidateErrors;
} else {
return isset($this->aValidateErrors[$sField]) ? $this->aValidateErrors[$sField] : array();
}
}
Возвращает список ошибок для всех полей или одного поля
public string _getValidateScenario()
| ||
{return} | string |
public function _getValidateScenario() {
return $this->sValidateScenario;
}
Возвращает текущий сценарий валидации
public array _getValidators(null|string $sField=NULL)
| ||
$sField | null|string | Поле сущности для которого необходимо вернуть валидаторы, если нет, то возвращается для всех полей |
{return} | array |
public function _getValidators($sField=null) {
$aValidators=$this->_createValidators();
$aValidatorsReturn=array();
$sScenario=$this->_getValidateScenario();
foreach($aValidators as $oValidator) {
/**
* Проверка на текущий сценарий
*/
if($oValidator->applyTo($sScenario)) {
if($sField===null || in_array($sField,$oValidator->fields,true)) {
$aValidatorsReturn[]=$oValidator;
}
}
}
return $aValidatorsReturn;
}
Возвращает список валидаторов с учетом текущего сценария
public bool _hasValidateErrors(null|string $sField=NULL)
| ||
$sField | null|string | Поле сущности, если нет, то проверяется для всех полей |
{return} | bool |
public function _hasValidateErrors($sField=null) {
if($sField===null) {
return $this->aValidateErrors!==array();
} else {
return isset($this->aValidateErrors[$sField]);
}
}
Проверяет есть ли ошибки валидации
public void _setData(array $aData)
| ||
$aData | array | Ассоциативный массив данных сущности |
public function _setData($aData) {
if(is_array($aData)) {
foreach ($aData as $sKey => $val) {
$this->_aData[$sKey] = $val;
}
}
}
Устанавливает данные сущности
public void _setValidateScenario(string $sValue)
| ||
$sValue | string |
public function _setValidateScenario($sValue) {
$this->sValidateScenario=$sValue;
}
Устанавливает сценарий валидации Если использовать валидацию без сценария, то будут использоваться только те правила, где нет никаких сценариев, либо указан пустой сценарий '' Если указать сценарий, то проверка будет только по правилом, где в списке сценарией есть указанный