本文整理汇总了PHP中E::getInstance方法的典型用法代码示例。如果您正苦于以下问题:PHP E::getInstance方法的具体用法?PHP E::getInstance怎么用?PHP E::getInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类E
的用法示例。
在下文中一共展示了E::getInstance方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __get
public function __get($sName)
{
// LS compatibility
if ($sName === 'oEngine') {
$this->oEngine = E::getInstance();
}
return $this->oEngine;
}
示例2: __get
public function __get($sName)
{
// LS compatibility
if ($sName === 'oEngine') {
$this->oEngine = E::getInstance();
return $this->oEngine;
}
$trace = debug_backtrace();
$sError = 'Undefined property via __get(): ' . $sName . ' in ' . $trace[0]['file'] . ' on line ' . $trace[0]['line'];
F::SysWarning($sError);
return null;
}
示例3: __construct
/**
* Конструктор
*
* @param Engine $oEngine Объект ядра
* @param string $sAction Название экшена
*/
public function __construct($oEngine, $sAction = null)
{
if (func_num_args() == 1 && is_string($oEngine)) {
// Передан только экшен
$this->oEngine = E::getInstance();
$sAction = $oEngine;
} else {
// LS-compatible
$this->oEngine = $oEngine;
}
$this->_prepareRequestData();
//Engine::getInstance();
$this->sCurrentAction = $sAction;
$this->aParams = R::GetParams();
$this->RegisterEvent();
//Config::ResetLevel(Config::LEVEL_ACTION);
// Get current config level
$iConfigLevel = C::GetLevel();
// load action's config if exists
if ($sFile = F::File_Exists('/config/actions/' . $sAction . '.php', Config::Get('path.root.seek'))) {
// Дополняем текущий конфиг конфигом экшена
if ($aConfig = F::File_IncludeFile($sFile, true, true)) {
// Текущий уровень конфига может быть как меньше LEVEL_ACTION,
// так и больше. Нужно обновить все уровни
if ($iConfigLevel <= Config::LEVEL_ACTION) {
$iMinLevel = $iConfigLevel;
$iMaxLevel = Config::LEVEL_ACTION;
} else {
$iMinLevel = Config::LEVEL_ACTION;
$iMaxLevel = $iConfigLevel;
}
for ($iLevel = $iMinLevel; $iLevel <= $iMaxLevel; $iLevel++) {
if ($iLevel > $iConfigLevel) {
Config::ResetLevel(Config::LEVEL_ACTION);
}
Config::Load($aConfig, false, null, $iLevel, $sFile);
}
}
} elseif ($iConfigLevel < Config::LEVEL_ACTION) {
Config::ResetLevel(Config::LEVEL_ACTION);
}
}
示例4: checkCustomRules
/**
* Проверяет массив правил. В качестве правил может быть задана колбэк-функция
* или указан метод владельца сущности, который должен быть реализован заранее
*
* @param $aRules
* @param bool $bConcatenateResult
* @param bool $sOwnerClassName
* @return bool
*/
public function checkCustomRules($aRules, $bConcatenateResult = FALSE, $sOwnerClassName = FALSE)
{
// Ключ кэша
$sCacheKey = md5(serialize($aRules) . (string) $bConcatenateResult . (string) $sOwnerClassName);
if (!(FALSE === ($data = E::ModuleCache()->GetTmp($sCacheKey)))) {
return $data;
}
// Правило жёстко задано - вернем его
if (is_bool($aRules)) {
return $aRules;
}
// Правило жёстко задано - вернем его
if (is_string($aRules)) {
return $aRules;
}
/** @var callable[]|[][] $aActiveRule Правило вычисления активности */
// Нет правила, кнопка вообще не активна будет
if (!$aRules) {
return FALSE;
}
// Правило задается методаом меню
if (!is_array($aRules)) {
return FALSE;
}
if (!$sOwnerClassName) {
$aOwnerClassName = E::getInstance()->GetClassInfo($this, Engine::CI_MODULE);
$sOwnerClassName = reset($aOwnerClassName);
}
// Все проверки пройдены, запускаем вычисление активности
$bResult = FALSE;
foreach ($aRules as $sMethodName => $xRule) {
if (is_bool($xRule)) {
if ($bConcatenateResult) {
$bResult .= $xRule;
} else {
$bResult = $bResult || $xRule;
}
if ($bResult && !$bConcatenateResult) {
break;
}
continue;
}
if (is_string($xRule) && $bConcatenateResult) {
if (strpos($xRule, 'hook:') === 0) {
$bResult .= E::ModuleHook()->Run(substr($xRule, 5));
} elseif (strpos($xRule, 'text:') === 0) {
$bResult .= substr($xRule, 5);
} elseif (strpos($xRule, 'func:') === 0) {
$bResult .= call_user_func(substr($xRule, 5));
} else {
$bResult .= $xRule;
}
continue;
}
// Передан колбэк
if (is_callable($xRule)) {
$bResult = $bResult || $xRule();
if ($bResult && !$bConcatenateResult) {
break;
}
continue;
}
/**
* Передан вызов функции, например
* $xRule = array('compare_action' => array('index'))
*/
$sTmpMethodName = FALSE;
$aTmpMethodParams = FALSE;
// Метод передан строкой
if (is_int($sMethodName) && is_string($xRule)) {
$sTmpMethodName = $xRule;
$aTmpMethodParams = array();
}
// Метод передан массивом
if (is_string($sMethodName) && is_array($xRule)) {
$sTmpMethodName = $sMethodName;
$aTmpMethodParams = $xRule;
}
// Вызовем метод
if ($sTmpMethodName && $aTmpMethodParams !== FALSE) {
if (strpos($sTmpMethodName, 'hook:') === 0) {
$xCallResult = E::ModuleHook()->Run(substr($sTmpMethodName, 5), $aTmpMethodParams, false);
} elseif (strpos($sTmpMethodName, 'text:') === 0) {
$xCallResult = substr($sTmpMethodName, 5);
} elseif (strpos($sTmpMethodName, 'func:') === 0) {
$xCallResult = call_user_func_array(substr($sTmpMethodName, 5), $aTmpMethodParams);
} else {
$sTmpMethodName = $sOwnerClassName . '_' . F::StrCamelize($sTmpMethodName);
$xCallResult = call_user_func_array(array($this, $sTmpMethodName), $aTmpMethodParams);
}
if ($bConcatenateResult) {
//.........这里部分代码省略.........
示例5: Exec
/**
* Запускает весь процесс :)
*
*/
public function Exec()
{
$this->ParseUrl();
$this->DefineActionClass();
// Для возможности ДО инициализации модулей определить какой action/event запрошен
$this->oEngine = E::getInstance();
$this->oEngine->Init();
// Подгружаем предыдущий URL, если он был
$sData = E::ModuleSession()->GetCookie(static::BACKWARD_COOKIE);
if ($sData) {
$aData = F::Unserialize($sData);
if (is_array($aData)) {
$this->aBackwardUrl = $aData;
}
}
// И сохраняем текущий, если это не ajax-запрос
if (!F::AjaxRequest()) {
E::ModuleSession()->SetCookie(static::BACKWARD_COOKIE, F::Serialize($this->aCurrentUrl, true));
}
$this->ExecAction();
$this->Shutdown(false);
}
示例6: GetTableName
/**
* Возвращает имя таблицы для сущности
*
* @param EntityORM $oEntity Объект сущности
*
* @return string
*/
public static function GetTableName($oEntity)
{
/**
* Варианты таблиц:
* prefix_user -> если модуль совпадает с сущностью
* prefix_user_invite -> если модуль не сопадает с сущностью
*/
$sClass = E::getInstance()->Plugin_GetDelegater('entity', is_object($oEntity) ? get_class($oEntity) : $oEntity);
$sModuleName = F::StrUnderscore(E::GetModuleName($sClass));
$sEntityName = F::StrUnderscore(E::GetEntityName($sClass));
if (strpos($sEntityName, $sModuleName) === 0) {
$sTable = F::StrUnderscore($sEntityName);
} else {
$sTable = F::StrUnderscore($sModuleName) . '_' . F::StrUnderscore($sEntityName);
}
/**
* Если название таблиц переопределено в конфиге, то возвращаем его
*/
if (Config::Get('db.table.' . $sTable)) {
return Config::Get('db.table.' . $sTable);
} else {
return Config::Get('db.table.prefix') . $sTable;
}
}
示例7: __construct
/**
* Конструктор
*
* @param Engine $oEngine Объект ядра
* @param string $sAction Название экшена
*/
public function __construct($oEngine, $sAction = null)
{
if (func_num_args() == 1 && is_string($oEngine)) {
// Передан только экшен
$this->oEngine = E::getInstance();
$sAction = $oEngine;
} else {
// LS-compatible
$this->oEngine = $oEngine;
}
//Engine::getInstance();
$this->sCurrentAction = $sAction;
$this->aParams = R::GetParams();
$this->RegisterEvent();
// load action's config if exists
Config::ResetLevel(Config::LEVEL_ACTION);
if ($sFile = F::File_Exists('/config/actions/' . $sAction . '.php', Config::Get('path.root.seek'))) {
// Дополняем текущий конфиг конфигом экшена
Config::LoadFromFile($sFile, false, Config::LEVEL_ACTION);
}
}
示例8: __call
//.........这里部分代码省略.........
* @return mixed
*/
public function __call($sName, $aArgs)
{
$sType = substr($sName, 0, strpos(F::StrUnderscore($sName), '_'));
if (!strpos($sName, '_') && in_array($sType, array('get', 'set', 'reload'))) {
$sKey = F::StrUnderscore(preg_replace('/' . $sType . '/', '', $sName, 1));
if ($sType == 'get') {
if (isset($this->_aData[$sKey])) {
return $this->_aData[$sKey];
} else {
$sField = $this->_getField($sKey);
if ($sField != $sKey && isset($this->_aData[$sField])) {
return $this->_aData[$sField];
}
}
/**
* Проверяем на связи
*/
if (array_key_exists($sKey, $this->aRelations)) {
$sEntityRel = $this->aRelations[$sKey][1];
$sRelationType = $this->aRelations[$sKey][0];
$sRelationKey = $this->aRelations[$sKey][2];
$sRelationJoinTable = null;
$sRelationJoinTableKey = 0;
// foreign key в join-таблице для текущей сущности
if ($sRelationType == self::RELATION_TYPE_MANY_TO_MANY && array_key_exists(3, $this->aRelations[$sKey])) {
$sRelationJoinTable = $this->aRelations[$sKey][3];
$sRelationJoinTableKey = isset($this->aRelations[$sKey][4]) ? $this->aRelations[$sKey][4] : $this->_getPrimaryKey();
}
/**
* Если связь уже загруженна, то возвращаем сразу результат
*/
if (array_key_exists($sKey, $this->aRelationsData)) {
return $this->aRelationsData[$sKey];
}
$sRelModuleName = E::GetModuleName($sEntityRel);
$sRelEntityName = E::GetEntityName($sEntityRel);
$sRelPluginPrefix = E::GetPluginPrefix($sEntityRel);
$sRelPrimaryKey = 'id';
if ($oRelEntity = E::GetEntity($sEntityRel)) {
$sRelPrimaryKey = $oRelEntity->_getPrimaryKey();
}
$iPrimaryKeyValue = $this->getProp($this->_getPrimaryKey());
$sCmd = '';
$mCmdArgs = array();
switch ($sRelationType) {
case self::RELATION_TYPE_BELONGS_TO:
$sCmd = "{$sRelPluginPrefix}{$sRelModuleName}_get{$sRelEntityName}By" . F::StrCamelize($sRelPrimaryKey);
$mCmdArgs = $this->getProp($sRelationKey);
break;
case self::RELATION_TYPE_HAS_ONE:
$sCmd = "{$sRelPluginPrefix}{$sRelModuleName}_get{$sRelEntityName}By" . F::StrCamelize($sRelationKey);
$mCmdArgs = $iPrimaryKeyValue;
break;
case self::RELATION_TYPE_HAS_MANY:
$sCmd = "{$sRelPluginPrefix}{$sRelModuleName}_get{$sRelEntityName}ItemsByFilter";
$mCmdArgs = array($sRelationKey => $iPrimaryKeyValue);
break;
case self::RELATION_TYPE_MANY_TO_MANY:
$sCmd = "{$sRelPluginPrefix}Module{$sRelModuleName}_get{$sRelEntityName}ItemsByJoinTable";
$mCmdArgs = array('#join_table' => Config::Get($sRelationJoinTable), '#relation_key' => $sRelationKey, '#by_key' => $sRelationJoinTableKey, '#by_value' => $iPrimaryKeyValue, '#index-from-primary' => true);
break;
default:
break;
}
// Нужно ли учитывать дополнительный фильтр
$bUseFilter = is_array($mCmdArgs) && array_key_exists(0, $aArgs) && is_array($aArgs[0]);
if ($bUseFilter) {
$mCmdArgs = array_merge($mCmdArgs, $aArgs[0]);
}
$aCallArgs = array($mCmdArgs);
$res = E::GetInstance()->_CallModule($sCmd, $aCallArgs);
// Сохраняем данные только в случае "чистой" выборки
if (!$bUseFilter) {
$this->aRelationsData[$sKey] = $res;
}
// Создаём объекты-обёртки для связей MANY_TO_MANY
if ($sRelationType == self::RELATION_TYPE_MANY_TO_MANY) {
$this->_aManyToManyRelations[$sKey] = new LS_ManyToManyRelation($res);
}
return $res;
}
return null;
} elseif ($sType == 'set' && array_key_exists(0, $aArgs)) {
if (array_key_exists($sKey, $this->aRelations)) {
$this->aRelationsData[$sKey] = $aArgs[0];
} else {
$this->_aData[$this->_getField($sKey)] = $aArgs[0];
}
} elseif ($sType == 'reload') {
if (array_key_exists($sKey, $this->aRelationsData)) {
unset($this->aRelationsData[$sKey]);
return $this->__call('get' . F::StrCamelize($sKey), $aArgs);
}
}
} else {
return E::getInstance()->_CallModule($sName, $aArgs);
}
}