LsObject
Package | framework.engine |
---|---|
Inheritance | abstract class LsObject |
Subclasses | Action, Behavior, Block, Cron, Entity, Event, Hook, LS, Mapper, Module, ORMRelationManyToMany, Plugin, Router |
Since | 1.0 |
Source Code | /framework/classes/engine/LsObject.class.php |
От этого класса наследуются все остальные
Protected Properties
Property | Type | Description | Defined By |
---|---|---|---|
_aBehaviors | Список поведений в виде готовых объектов, формируется автоматически | LsObject | |
aBehaviors | array | Список поведений | LsObject |
Public Methods
Method | Description | Defined By |
---|---|---|
AddBehaviorHook() | Добавляет хук поведения | LsObject |
AttachBehavior() | Присоединяет поведение к объекту | LsObject |
DetachBehavior() | Отсоединяет поведение от объекта | LsObject |
GetBehavior() | Возвращает объект поведения по его имени | LsObject |
GetBehaviors() | Возвращает все объекты поведения | LsObject |
RemoveBehaviorHook() | Удаляет хук поведения | LsObject |
RunBehaviorHook() | Запускает хук поведения на выполнение | LsObject |
__call() | Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля | LsObject |
__clone() | При клонировании сбрасываем поведения | LsObject |
__construct() | Конструктор, запускается автоматически при создании объекта | LsObject |
__get() | Обработка доступа к объекты поведения | LsObject |
Protected Methods
Method | Description | Defined By |
---|---|---|
PrepareBehaviors() | Инициализация поведений | LsObject |
Property Details
_aBehaviors
property
protected $_aBehaviors;
Список поведений в виде готовых объектов, формируется автоматически
aBehaviors
property
protected array $aBehaviors;
Список поведений
array( 'property'=>array( 'class'=>'ModuleProperty_BehaviorProperty', 'param1'=>12345, 'param2'=>'two' ), 'category'=>$oCategoryBehavior )
Method Details
AddBehaviorHook()
method
public mixed AddBehaviorHook(string $sName, array $aCallback, int $iPriority=1)
| ||
$sName | string | |
$aCallback | array | |
$iPriority | int | |
{return} | mixed |
Source Code: /framework/classes/engine/LsObject.class.php#183 (show)
public function AddBehaviorHook($sName, $aCallback, $iPriority = 1)
{
return $this->Hook_AddHookBehavior($sName, $this, $aCallback, $iPriority);
}
Добавляет хук поведения
AttachBehavior()
method
public Behavior AttachBehavior(string $sName, $mBehavior $mBehavior)
| ||
$sName | string | |
$mBehavior | $mBehavior | |
{return} | Behavior |
Source Code: /framework/classes/engine/LsObject.class.php#115 (show)
public function AttachBehavior($sName, $mBehavior)
{
$this->PrepareBehaviors();
if (!($mBehavior instanceof Behavior)) {
if (is_string($mBehavior)) {
$sClass = $mBehavior;
$aParams = array();
} else {
if (isset($mBehavior['class'])) {
$sClass = $mBehavior['class'];
unset($mBehavior['class']);
} else {
$sClass = array_shift($mBehavior);
}
$aParams = $mBehavior;
}
$mBehavior = Engine::GetBehavior($sClass, $aParams);
}
if (isset($this->_aBehaviors[$sName])) {
$this->_aBehaviors[$sName]->Detach();
}
$mBehavior->Attach($this);
return $this->_aBehaviors[$sName] = $mBehavior;
}
Присоединяет поведение к объекту
DetachBehavior()
method
public Behavior|null DetachBehavior(string $sName)
| ||
$sName | string | |
{return} | Behavior|null |
Source Code: /framework/classes/engine/LsObject.class.php#147 (show)
public function DetachBehavior($sName)
{
$this->PrepareBehaviors();
if (isset($this->_aBehaviors[$sName])) {
$oBehavior = $this->_aBehaviors[$sName];
unset($this->_aBehaviors[$sName]);
$oBehavior->Detach();
return $oBehavior;
} else {
return null;
}
}
Отсоединяет поведение от объекта
GetBehavior()
method
public Behavior|null GetBehavior(string $sName)
| ||
$sName | string | |
{return} | Behavior|null |
Source Code: /framework/classes/engine/LsObject.class.php#88 (show)
public function GetBehavior($sName)
{
$this->PrepareBehaviors();
return isset($this->_aBehaviors[$sName]) ? $this->_aBehaviors[$sName] : null;
}
Возвращает объект поведения по его имени
GetBehaviors()
method
public array GetBehaviors()
| ||
{return} | array |
Source Code: /framework/classes/engine/LsObject.class.php#75 (show)
public function GetBehaviors()
{
$this->PrepareBehaviors();
return $this->_aBehaviors;
}
Возвращает все объекты поведения
PrepareBehaviors()
method
protected void PrepareBehaviors()
|
Source Code: /framework/classes/engine/LsObject.class.php#97 (show)
protected function PrepareBehaviors()
{
if (is_null($this->_aBehaviors)) {
$this->_aBehaviors = array();
foreach ($this->aBehaviors as $sName => $mBehavior) {
$this->AttachBehavior($sName, $mBehavior);
}
}
}
Инициализация поведений
RemoveBehaviorHook()
method
public mixed RemoveBehaviorHook(string $sName, array|null $aCallback=NULL)
| ||
$sName | string | |
$aCallback | array|null | Если null, то будут удалены все хуки |
{return} | mixed |
Source Code: /framework/classes/engine/LsObject.class.php#196 (show)
public function RemoveBehaviorHook($sName, $aCallback = null)
{
return $this->Hook_RemoveHookBehavior($sName, $this, $aCallback);
}
Удаляет хук поведения
RunBehaviorHook()
method
public mixed RunBehaviorHook(string $sName, array $aVars=array (
), bool $bWithGlobal=false)
| ||
$sName | string | |
$aVars | array | |
$bWithGlobal | bool | Запускать дополнительно одноименный глобальный (стандартный) хук |
{return} | mixed |
Source Code: /framework/classes/engine/LsObject.class.php#169 (show)
public function RunBehaviorHook($sName, $aVars = array(), $bWithGlobal = false)
{
return $this->Hook_RunHookBehavior($sName, $this, $aVars, $bWithGlobal);
}
Запускает хук поведения на выполнение
__call()
method
public mixed __call(string $sName, array $aArgs)
| ||
$sName | string | Имя метода |
$aArgs | array | Аргументы |
{return} | mixed |
Source Code: /framework/classes/engine/LsObject.class.php#227 (show)
public function __call($sName, $aArgs)
{
$this->PrepareBehaviors();
/**
* Проверяем на вызов метода поведения
* Пропускаем служебные методы поведения
*/
if (!in_array(strtolower($sName), array('attach', 'detach'))) {
foreach ($this->_aBehaviors as $oObject) {
if (func_method_exists($oObject, $sName, 'public')) {
return call_user_func_array(array($oObject, $sName), $aArgs);
}
}
}
/**
* Если метод не найден, то запускаем стандартную обработку
*/
return Engine::getInstance()->_CallModule($sName, $aArgs);
}
Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
See Also
__clone()
method
public void __clone()
|
Source Code: /framework/classes/engine/LsObject.class.php#65 (show)
public function __clone()
{
$this->_aBehaviors = null;
}
При клонировании сбрасываем поведения
__construct()
method
public void __construct()
|
Source Code: /framework/classes/engine/LsObject.class.php#57 (show)
public function __construct()
{
}
Конструктор, запускается автоматически при создании объекта
__get()
method
public mixed __get(string $sName)
| ||
$sName | string | |
{return} | mixed |
Source Code: /framework/classes/engine/LsObject.class.php#208 (show)
public function __get($sName)
{
$this->PrepareBehaviors();
/**
* Проверяем на получение объекта поведения
*/
if (isset($this->_aBehaviors[$sName])) {
return $this->_aBehaviors[$sName];
}
}
Обработка доступа к объекты поведения