Behavior
Package | framework.engine |
---|---|
Inheritance | abstract class Behavior » LsObject |
Subclasses | ModuleCategory_BehaviorEntity, ModuleCategory_BehaviorModule, ModuleProperty_BehaviorEntity, ModuleProperty_BehaviorModule |
Since | 2.0 |
Source Code | /framework/classes/engine/Behavior.class.php |
Абстракция поведения, от которой наследуются все поведения
Поведения предназначены для удобного изменения функционала другого объекта (модуля, сущности и т.п.)
В основном поведения добавляют новые свойства и методы (функционируют через магические вызовы)
Концептуальное отличие от наследования через плагины в том, что целевой объект сам "выбирает" какой функционал получить, а не наоборот
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
aHooks | array | Список хуков, которые отслеживает поведение | Behavior |
aParams | array | Параметры, которые указали при добавлении поведения | Behavior |
oObject | LsObject|null | Исходный объект, к которому добавлено поведение | Behavior |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
Attach() | Добавляет поведение к объекту | Behavior |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
Detach() | Удаляет поведение у текущего объекта | Behavior |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | При клонировании сбрасываем поведения | LsObject |
__construct() | Конструктор, инициализирует параметры | Behavior |
__get() | Обработка доступа к объекты поведения | LsObject |
getParam() | Возвращает параметр по его имени | Behavior |
getParams() | Возвращает все параметры | Behavior |
setParam() | Устанавливает значение параметра | Behavior |
Protected Methods
Method | Description | Defined By |
---|---|---|
Init() | Инициализация поведения, выполняется автоматически после добавления (Attach) поведения | Behavior |
ParseHookParams() | Вспомогательный метод для определение коллбека из параметров | Behavior |
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
aHooks
property
protected array $aHooks;
Список хуков, которые отслеживает поведение
array( 'hook_name_1' => 'method', 'hook_name_2' => array($oObject,'method'), // callback 'hook_name_3' => array('method',100), // with priority 'hook_name_4' => array(array($oObject,'method'),100), // with callback and priority )
aParams
property
protected array $aParams;
Параметры, которые указали при добавлении поведения Здесь можно определить дефолтные параметры, которые затем смержатся
oObject
property
protected LsObject|null $oObject;
Исходный объект, к которому добавлено поведение
Method Details
Attach()
method
public void Attach(LsObject $oObject)
| ||
$oObject | LsObject |
Source Code: /framework/classes/engine/Behavior.class.php#89 (show)
public function Attach($oObject)
{
$this->oObject = $oObject;
foreach ($this->aHooks as $sName => $mParams) {
list($aCallback, $iPriority) = $this->ParseHookParams($mParams);
$this->oObject->AddBehaviorHook($sName, $aCallback, $iPriority);
}
$this->Init();
}
Добавляет поведение к объекту
Detach()
method
public void Detach()
|
Source Code: /framework/classes/engine/Behavior.class.php#102 (show)
public function Detach()
{
if ($this->oObject) {
foreach ($this->aHooks as $sName => $mParams) {
list($aCallback,) = $this->ParseHookParams($mParams);
$this->oObject->RemoveBehaviorHook($sName, $aCallback);
}
$this->oObject = null;
}
}
Удаляет поведение у текущего объекта
Init()
method
protected void Init()
|
Source Code: /framework/classes/engine/Behavior.class.php#79 (show)
protected function Init()
{
}
Инициализация поведения, выполняется автоматически после добавления (Attach) поведения Данный метод можно переопределить внутри конкретного поведения
ParseHookParams()
method
protected array ParseHookParams(array|string $mParams)
| ||
$mParams | array|string | |
{return} | array |
Source Code: /framework/classes/engine/Behavior.class.php#120 (show)
protected function ParseHookParams($mParams)
{
$iPriority = 1;
if (is_string($mParams)) {
$aCallback = array($this, $mParams);
} elseif (is_object($mParams[0])) {
$aCallback = $mParams;
} elseif (is_string($mParams[0])) {
$aCallback = array($this, $mParams[0]);
if (isset($mParams[1])) {
$iPriority = $mParams[1];
}
} else {
$aCallback = $mParams[0];
if (isset($mParams[1])) {
$iPriority = $mParams[1];
}
}
return array($aCallback, $iPriority);
}
Вспомогательный метод для определение коллбека из параметров
__construct()
method
public void __construct(array $aParams=array (
))
| ||
$aParams | array |
Source Code: /framework/classes/engine/Behavior.class.php#67 (show)
public function __construct($aParams = array())
{
parent::__construct();
if ($aParams) {
$this->aParams = array_merge($this->aParams, $aParams);
}
}
Конструктор, инициализирует параметры
getParam()
method
public mixed getParam(string $sName)
| ||
$sName | string | |
{return} | mixed |
Source Code: /framework/classes/engine/Behavior.class.php#148 (show)
public function getParam($sName)
{
return isset($this->aParams[$sName]) ? $this->aParams[$sName] : null;
}
Возвращает параметр по его имени
getParams()
method
public array getParams()
| ||
{return} | array |
Source Code: /framework/classes/engine/Behavior.class.php#169 (show)
public function getParams()
{
return $this->aParams;
}
Возвращает все параметры
setParam()
method
public void setParam(string $sName, mixed $mValue)
| ||
$sName | string | |
$mValue | mixed |
Source Code: /framework/classes/engine/Behavior.class.php#159 (show)
public function setParam($sName, $mValue)
{
$this->aParams[$sName] = $mValue;
}
Устанавливает значение параметра