本文整理汇总了PHP中F::StrUnderscore方法的典型用法代码示例。如果您正苦于以下问题:PHP F::StrUnderscore方法的具体用法?PHP F::StrUnderscore怎么用?PHP F::StrUnderscore使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类F
的用法示例。
在下文中一共展示了F::StrUnderscore方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GetClassPath
/**
* Возвращает информацию о пути до файла класса.
* Используется в {@link autoload автозагрузке}
*
* @static
*
* @param LsObject|string $oObject Объект - модуль, экшен, плагин, хук, сущность
* @param int $iArea В какой области проверять (классы движка, общие классы, плагины)
*
* @return null|string
*/
public static function GetClassPath($oObject, $iArea = self::CI_AREA_ACTUAL)
{
$aInfo = static::GetClassInfo($oObject, self::CI_OBJECT);
$sPluginDir = '';
if ($aInfo[self::CI_PLUGIN]) {
$sPlugin = F::StrUnderscore($aInfo[self::CI_PLUGIN]);
$aPlugins = F::GetPluginsList($iArea & self::CI_AREA_ALL_PLUGINS, false);
if (isset($aPlugins[$sPlugin]['dirname'])) {
$sPluginDir = $aPlugins[$sPlugin]['dirname'];
} else {
$sPluginDir = $sPlugin;
}
}
$aPathSeek = Config::Get('path.root.seek');
if ($aInfo[self::CI_ENTITY]) {
// Сущность
if ($aInfo[self::CI_PLUGIN]) {
// Сущность модуля плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/entity/' . $aInfo[self::CI_ENTITY] . '.entity.class.php';
} else {
// Сущность модуля ядра
$sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/entity/' . $aInfo[self::CI_ENTITY] . '.entity.class.php';
}
} elseif ($aInfo[self::CI_MAPPER]) {
// Маппер
if ($aInfo[self::CI_PLUGIN]) {
// Маппер модуля плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/mapper/' . $aInfo[self::CI_MAPPER] . '.mapper.class.php';
} else {
// Маппер модуля ядра
$sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/mapper/' . $aInfo[self::CI_MAPPER] . '.mapper.class.php';
}
} elseif ($aInfo[self::CI_ACTION]) {
// Экшн
if ($aInfo[self::CI_PLUGIN]) {
// Экшн плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/actions/Action' . $aInfo[self::CI_ACTION] . '.class.php';
} else {
// Экшн ядра
$sFile = 'classes/actions/Action' . $aInfo[self::CI_ACTION] . '.class.php';
}
} elseif ($aInfo[self::CI_MODULE]) {
// Модуль
if ($aInfo[self::CI_PLUGIN]) {
// Модуль плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/modules/' . F::StrUnderscore($aInfo[self::CI_MODULE]) . '/' . $aInfo[self::CI_MODULE] . '.class.php';
} else {
// Модуль ядра
$sFile = 'classes/modules/' . strtolower($aInfo[self::CI_MODULE]) . '/' . $aInfo[self::CI_MODULE] . '.class.php';
}
} elseif ($aInfo[self::CI_HOOK]) {
// Хук
if ($aInfo[self::CI_PLUGIN]) {
// Хук плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/hooks/Hook' . $aInfo[self::CI_HOOK] . '.class.php';
} else {
// Хук ядра
$sFile = 'classes/hooks/Hook' . $aInfo[self::CI_HOOK] . '.class.php';
}
} elseif ($aInfo[self::CI_BLOCK]) {
// LS-compatible
if ($aInfo[self::CI_PLUGIN]) {
// Блок плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/blocks/Block' . $aInfo[self::CI_BLOCK] . '.class.php';
} else {
// Блок ядра
$sFile = 'classes/blocks/Block' . $aInfo[self::CI_BLOCK] . '.class.php';
}
} elseif ($aInfo[self::CI_WIDGET]) {
// Виджет
if ($aInfo[self::CI_PLUGIN]) {
// Виджет плагина
$sFile = 'plugins/' . $sPluginDir . '/classes/widgets/Widget' . $aInfo[self::CI_WIDGET] . '.class.php';
} else {
// Блок ядра
$sFile = 'classes/widgets/Widget' . $aInfo[self::CI_WIDGET] . '.class.php';
}
} elseif ($aInfo[self::CI_PLUGIN]) {
// Плагин
$sFile = 'plugins/' . $sPluginDir . '/Plugin' . $aInfo[self::CI_PLUGIN] . '.class.php';
} else {
$sClassName = is_string($oObject) ? $oObject : get_class($oObject);
$sFile = $sClassName . '.class.php';
$aPathSeek = array(Config::Get('path.dir.engine') . '/classes/core/', Config::Get('path.dir.engine') . '/classes/abstract/');
}
$sPath = F::File_Exists($sFile, $aPathSeek);
return $sPath ? $sPath : null;
}
示例2: _pluginDirName
/**
* Returns normalized dirname of plugin
*
* @param object|string $xPlugin
*
* @return string
*/
protected static function _pluginDirName($xPlugin)
{
$sPluginName = self::_pluginName($xPlugin);
if (strpbrk($sPluginName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')) {
return F::StrUnderscore($sPluginName);
}
return $sPluginName;
}
示例3: __call
/**
* Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
* Также производит обработку методов set* и get*
* @see Engine::_CallModule
*
* @param string $sName Имя метода
* @param array $aArgs Аргументы
* @return mixed
*/
public function __call($sName, $aArgs)
{
if (!strpos($sName, '_')) {
$sType = strtolower(substr($sName, 0, 3));
if ($sType == 'get' || $sType == 'set') {
$sKey = F::StrUnderscore(substr($sName, 3));
if ($sType == 'get') {
if ($this->isProp($sKey)) {
return $this->getProp($sKey);
} else {
if (preg_match('/Entity([^_]+)/', get_class($this), $aMatches)) {
$sModulePrefix = F::StrUnderscore($aMatches[1]) . '_';
if ($this->isProp($sModulePrefix . $sKey)) {
return $this->getProp($sModulePrefix . $sKey);
}
}
}
} elseif ($sType == 'set' && (isset($aArgs[0]) || array_key_exists(0, $aArgs))) {
$this->setProp($sKey, $aArgs[0]);
}
return null;
} else {
return parent::__call($sName, $aArgs);
}
}
return E::getInstance()->_CallModule($sName, $aArgs);
}
示例4: func_underscore
function func_underscore($sStr)
{
return F::StrUnderscore($sStr);
}
示例5: 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;
}
}
示例6: __call
/**
* Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля.
* Также обрабатывает различные ORM методы сущности, например
* <pre>
* $oUser->Save();
* $oUser->Delete();
* </pre>
* И методы модуля ORM, например
* <pre>
* E::ModuleUser()->GetUserItemsByName('Claus');
* E::ModuleUser()->GetUserItemsAll();
* </pre>
*
* @see Engine::_CallModule
*
* @param string $sName Имя метода
* @param array $aArgs Аргументы
*
* @return mixed
*/
public function __call($sName, $aArgs)
{
if (preg_match("@^add([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_AddEntity($aArgs[0]);
}
if (preg_match("@^update([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_UpdateEntity($aArgs[0]);
}
if (preg_match("@^save([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_SaveEntity($aArgs[0]);
}
if (preg_match("@^delete([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_DeleteEntity($aArgs[0]);
}
if (preg_match("@^reload([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_ReloadEntity($aArgs[0]);
}
if (preg_match("@^showcolumnsfrom([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_ShowColumnsFrom($aArgs[0]);
}
if (preg_match("@^showprimaryindexfrom([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_ShowPrimaryIndexFrom($aArgs[0]);
}
if (preg_match("@^getchildrenof([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_GetChildrenOfEntity($aArgs[0]);
}
if (preg_match("@^getparentof([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_GetParentOfEntity($aArgs[0]);
}
if (preg_match("@^getdescendantsof([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_GetDescendantsOfEntity($aArgs[0]);
}
if (preg_match("@^getancestorsof([\\w]+)\$@i", $sName, $aMatch)) {
return $this->_GetAncestorsOfEntity($aArgs[0]);
}
if (preg_match("@^loadtreeof([\\w]+)\$@i", $sName, $aMatch)) {
$sEntityFull = array_key_exists(1, $aMatch) ? $aMatch[1] : null;
return $this->LoadTree($aArgs[0], $sEntityFull);
}
$sNameUnderscore = F::StrUnderscore($sName);
$iEntityPosEnd = 0;
if (strpos($sNameUnderscore, '_items') >= 3) {
$iEntityPosEnd = strpos($sNameUnderscore, '_items');
} else {
if (strpos($sNameUnderscore, '_by') >= 3) {
$iEntityPosEnd = strpos($sNameUnderscore, '_by');
} else {
if (strpos($sNameUnderscore, '_all') >= 3) {
$iEntityPosEnd = strpos($sNameUnderscore, '_all');
}
}
}
if ($iEntityPosEnd && $iEntityPosEnd > 4) {
$sEntityName = substr($sNameUnderscore, 4, $iEntityPosEnd - 4);
} else {
$sEntityName = F::StrUnderscore(E::GetModuleName($this)) . '_';
$sNameUnderscore = substr_replace($sNameUnderscore, $sEntityName, 4, 0);
$iEntityPosEnd = strlen($sEntityName) - 1 + 4;
}
$sNameUnderscore = substr_replace($sNameUnderscore, str_replace('_', '', $sEntityName), 4, $iEntityPosEnd - 4);
$sEntityName = F::StrCamelize($sEntityName);
/**
* getUserItemsByFilter() get_user_items_by_filter
*/
if (preg_match("@^get_([a-z]+)((_items)|())_by_filter\$@i", $sNameUnderscore, $aMatch)) {
if ($aMatch[2] == '_items') {
return $this->GetItemsByFilter($aArgs[0], $sEntityName);
} else {
return $this->GetByFilter($aArgs[0], $sEntityName);
}
}
/**
* getUserItemsByArrayId() get_user_items_by_array_id
*/
if (preg_match("@^get_([a-z]+)_items_by_array_([_a-z]+)\$@i", $sNameUnderscore, $aMatch)) {
return $this->GetItemsByArray(array($aMatch[2] => $aArgs[0]), $sEntityName);
}
/**
* getUserItemsByJoinTable() get_user_items_by_join_table
*/
//.........这里部分代码省略.........
示例7: __get
/**
* Используется для доступа к связанным данным типа MANY_TO_MANY
*
* @param string $sName Название свойства к которому обращаемсяя
*
* @return mixed
*/
public function __get($sName)
{
// Обработка обращений к обёрткам связей MANY_TO_MANY
// Если связь загружена, возвращаем объект связи
if (isset($this->_aManyToManyRelations[F::StrUnderscore($sName)])) {
return $this->_aManyToManyRelations[F::StrUnderscore($sName)];
// Есл не загружена, но связь с таким именем существет, пробуем загрузить и вернуть объект связи
} elseif (isset($this->aRelations[F::StrUnderscore($sName)]) && $this->aRelations[F::StrUnderscore($sName)][0] == self::RELATION_TYPE_MANY_TO_MANY) {
$sMethod = 'get' . F::StrCamelize($sName);
$this->__call($sMethod, array());
if (isset($this->_aManyToManyRelations[F::StrUnderscore($sName)])) {
return $this->_aManyToManyRelations[F::StrUnderscore($sName)];
}
// В противном случае возвращаем то, что просили у объекта
} else {
return $this->{$sName};
}
}