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

Hide inherited properties

PropertyTypeDescriptionDefined By
_aBehaviors Список поведений в виде готовых объектов, формируется автоматически LsObject
aBehaviors array Список поведений LsObject
aHooks array Список хуков, которые отслеживает поведение Behavior
aParams array Параметры, которые указали при добавлении поведения Behavior
oObject LsObject|null Исходный объект, к которому добавлено поведение Behavior

Public Methods

Hide inherited methods

MethodDescriptionDefined 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

Hide inherited methods

MethodDescriptionDefined 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;
}

Устанавливает значение параметра