mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-17 07:10:48 +03:00
Возможность автоматического использования в сущностях set* и get* методов, т.е. без объявления их в классе сущности.
При таком подходе методы называть обязательно в camel style, например, getUserMail -> user_mail
This commit is contained in:
parent
6a38041691
commit
dddb5c39e2
|
@ -36,20 +36,7 @@ abstract class Entity extends Object {
|
|||
}
|
||||
public function _getData() {
|
||||
return $this->_aData;
|
||||
}
|
||||
/**
|
||||
* При попытке вызвать неопределенный метод сущности возвращаем null
|
||||
* В принципе можно это закомментить чтоб отлавливать ошибки при обращении к несуществующим методам :)
|
||||
*
|
||||
* @param string $sName
|
||||
* @param array $aArgs
|
||||
* @return unknown
|
||||
*/
|
||||
/*
|
||||
public function __call($sName,$aArgs) {
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
}
|
||||
/**
|
||||
* Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
|
||||
*
|
||||
|
@ -58,7 +45,20 @@ abstract class Entity extends Object {
|
|||
* @return unknown
|
||||
*/
|
||||
public function __call($sName,$aArgs) {
|
||||
return Engine::getInstance()->_CallModule($sName,$aArgs);
|
||||
$sType=strtolower(substr($sName,0,3));
|
||||
if (!strpos($sName,'_') and in_array($sType,array('get','set'))) {
|
||||
$sKey=strtolower(preg_replace('/([^A-Z])([A-Z])/',"$1_$2",substr($sName,3)));
|
||||
if ($sType=='get') {
|
||||
if (isset($this->_aData[$sKey])) {
|
||||
return $this->_aData[$sKey];
|
||||
}
|
||||
return null;
|
||||
} elseif ($sType=='set' and isset($aArgs[0])) {
|
||||
$this->_aData[$sKey]=$aArgs[0];
|
||||
}
|
||||
} else {
|
||||
return Engine::getInstance()->_CallModule($sName,$aArgs);
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Reference in a new issue