Loader::includeModule: метод Битрикс
Постоянная ссылка: http://bxapi.ru/src/?id=163649
// Bitrix\Main\Loader::includeModule()
// /bitrix/modules/main/lib/loader.php:70
/**
* Includes module by its name
*
* @param string $moduleName Name of the included module
* @return bool Returns true if module was included successfully, otherwise returns false
* @throws LoaderException
*/
public static function includeModule($moduleName)
{
if (!is_string($moduleName) || $moduleName == "")
throw new LoaderException("Empty module name");
if (preg_match("#[^a-zA-Z0-9._]#", $moduleName))
throw new LoaderException(sprintf("Module name '%s' is not correct", $moduleName));
$moduleName = strtr($moduleName, static::ALPHA_UPPER, static::ALPHA_LOWER);
if (self::SAFE_MODE)
{
if (!in_array($moduleName, self::$safeModeModules))
return false;
}
if (isset(self::$arLoadedModules[$moduleName]))
return self::$arLoadedModules[$moduleName];
if (isset(self::$arSemiloadedModules[$moduleName]))
trigger_error("Module '".$moduleName."' is in loading progress", E_USER_WARNING);
$arInstalledModules = ModuleManager::getInstalledModules();
if (!isset($arInstalledModules[$moduleName]))
return self::$arLoadedModules[$moduleName] = false;
$documentRoot = static::getDocumentRoot();
$moduleHolder = self::LOCAL_HOLDER;
$pathToInclude = $documentRoot."/".$moduleHolder."/modules/".$moduleName."/include.php";
if (!file_exists($pathToInclude))
{
$moduleHolder = self::BITRIX_HOLDER;
$pathToInclude = $documentRoot."/".$moduleHolder."/modules/".$moduleName."/include.php";
if (!file_exists($pathToInclude))
return self::$arLoadedModules[$moduleName] = false;
}
self::$arLoadedModulesHolders[$moduleName] = $moduleHolder;
self::$arSemiloadedModules[$moduleName] = true;
$res = self::includeModuleInternal($pathToInclude);
unset(self::$arSemiloadedModules[$moduleName]);
if ($res === false)
return self::$arLoadedModules[$moduleName] = false;
return self::$arLoadedModules[$moduleName] = true;
}