Доброго времени суток!
Столкнулся с проблемой которая поставила меня в ступор. Начал писать свой модуль (первый опыт), изучил стандартные модули на предмет установки , объявления и содержания и написал простенький модуль. Суть его пока предельна проста.
Ниже само содержание модуля, instal, include, и сам класс с простой функцией.
Проблема заключается вот в чем : устанавливаю модуль, все проходит отлично, мой пункт в меню появляется.
Далее делаю тестовую страницу , подключаю модуль, и вызываю функцию.
И тут магия (как мне кажется, на самом деле косяк мой) открываю страницу - все отлично, заветная функция печатает OK, обновляю страницу - пишет фатальную ошибку ,
Fatal error: Class 'LoyaltyProgram' not found in
После чего обновляю еще с десяток раз страницу - и опять печатает ОК! ну и так все и продолжается, то срабатывает , то нет. Плюс ко всему во время когда происходит ошибка, пункт меню в админ части пропадает, в списке модулей он значится как не установленный. При это в таблице b_module он есть .
Господа, помогите разобраться что не так?
include.php
Код |
---|
$arClasses=array(
'LoyaltyProgram'=>'classes/general/LoyaltyProgram.php'
);
CModule::AddAutoloadClasses("incarna_loyalty",$arClasses);
|
/install/index.php
Код |
---|
<?
Class incarna_loyalty extends CModule
{
var $MODULE_ID = "incarna_loyalty";
var $MODULE_VERSION;
var $MODULE_VERSION_DATE;
var $MODULE_NAME;
var $MODULE_DESCRIPTION;
var $MODULE_CSS;
function incarna_loyalty()
{
$arModuleVersion = array();
$path = str_replace("\\", "/", __FILE__);
$path = substr($path, 0, strlen($path) - strlen("/index.php"));
include($path."/version.php");
if (is_array($arModuleVersion) && array_key_exists("VERSION", $arModuleVersion))
{
$this->MODULE_VERSION = $arModuleVersion["VERSION"];
$this->MODULE_VERSION_DATE = $arModuleVersion["VERSION_DATE"];
}
$this->MODULE_NAME = "Тестовый модуль";
$this->MODULE_DESCRIPTION = "dev.test";
}
function DoInstall()
{
global $DOCUMENT_ROOT, $APPLICATION;
// Install events
//RegisterModuleDependences("iblock","OnBeforeIBlockElementUpdate",$this->MODULE_ID,"cMainRPJ","onBeforeElementUpdateHandler");
RegisterModule($this->MODULE_ID);
$APPLICATION->IncludeAdminFile("Установка модуля ".$this->MODULE_ID, $DOCUMENT_ROOT."/bitrix/modules/".$this->MODULE_ID."/install/step.php");
return true;
}
function DoUninstall()
{
global $DOCUMENT_ROOT, $APPLICATION;
UnRegisterModule($this->MODULE_ID);
$APPLICATION->IncludeAdminFile("Деинсталляция модуля ".$this->MODULE_ID, $DOCUMENT_ROOT."/bitrix/modules/".$this->MODULE_ID."/install/unstep.php");
return true;
}
} |
classes/general/LoyaltyProgram.php
Код |
---|
class LoyaltyProgram {
static $MODULE_ID = "incarna_loyalty";
static $BONUS_FILED = "UF_REWARD_POINTS";
/**
* Хэндлер, отслеживающий изменения в инфоблоках
* @param $arFields
* @return bool
*/
public function testFunc(){
echo self::$MODULE_ID;
echo self::$BONUS_FILED;
// Результат
return true;
}
} |