Вызов методов одного модуля в другом — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Возникают задачи, когда необходимо воспользоваться функционалом модуля, находясь при это…»)
 
Строка 1: Строка 1:
 +
 +
'''Актуально для версии 2.9'''
 +
 
Возникают задачи, когда необходимо воспользоваться функционалом модуля, находясь при этом не в нем. В данном случае получить доступ к другому модулю можно через методы объекта экземпляра класса этого модуля.
 
Возникают задачи, когда необходимо воспользоваться функционалом модуля, находясь при этом не в нем. В данном случае получить доступ к другому модулю можно через методы объекта экземпляра класса этого модуля.
 
Для получения такого объекта необходимо вызвать метод getModule класса cmsController:
 
Для получения такого объекта необходимо вызвать метод getModule класса cmsController:
Строка 28: Строка 31:
  
 
Если модуль загрузить не удастся, то метод getModule вернет false.
 
Если модуль загрузить не удастся, то метод getModule вернет false.
 +
[[Категория:API]]

Версия 08:18, 5 июня 2013

Актуально для версии 2.9

Возникают задачи, когда необходимо воспользоваться функционалом модуля, находясь при этом не в нем. В данном случае получить доступ к другому модулю можно через методы объекта экземпляра класса этого модуля. Для получения такого объекта необходимо вызвать метод getModule класса cmsController:

if ($oUsersMdl = cmsController::getInstance()->getModule("users")) {
	if ($oUsersMdl->is_auth()) {
		echo "Здравствуйте, " . $oUsersMdl->user_fullname . " (" .$oUsersMdl->user_login . ")";
	} else {
		echo "Вы гость";
	}
} else {
	echo "Не удалось загрузить модуль";
}

В приведенном выше примере мы получили экземпляр модуля "users" и все доступные у него методы и свойства (в качестве примера проверили, авторизован ли пользователь).

Для вызова модулей core, system и custom следует использовать запись:

if($macros['module'] == "core" || $macros['module'] == "system" || $macros['module'] == "custom") {
	$module = &system_buildin_load($macros['module']);
} else {
	$module = cmsController::getInstance()->getModule($macros['module']);
}

Если модуль загрузить не удастся, то метод getModule вернет false.