Closed mbakirov closed 5 years ago
Привет, через маркет поставил?
Ага
не знаю какой тут можно пулреквест сделать, файл bitrix/modules/sprint.migration/classes/Sprint/Migration/Locale.php же на месте? возможно сломан автолоадер
на #3 обращение к /local/php_interface/init.php:36 что-то там ломает автоладер видимо, может написан свой загрузчик?
Да, есть свой =) И он раньше регистрируется...И ищет он имена по битрикс-конвенции https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=3524&LESSON_PATH=3913.5062.3524...
а можете дать пример кода в вашем init.php - хочу воспроизвести у себя и починить
spl_autoload_register(function($className) {
$arClass = explode("\\", $className);
$moduleName = strtolower(sprintf('%s.%s', $arClass[0], $arClass[1]));
$moduleName = str_replace('bitrix.', '', $moduleName);
// module include
Loader::includeModule($moduleName);
$moduleLibDir = $_SERVER['DOCUMENT_ROOT'].'/local/modules/'.$moduleName.'/lib/';
if (!is_dir($moduleLibDir)) {
return false;
}
$classFilePath = $moduleLibDir.implode('/', array_slice($arClass, 2)).'.php';
if (file_exists($classFilePath) && is_file($classFilePath)) {
/** @noinspection PhpIncludeInspection */
require_once($classFilePath);
return true;
}
return false;
});
ну судя по коду я бы подключение модуля добавил внутрь проверки на существование файла
вот сюда
` if (file_exists($classFilePath) && is_file($classFilePath)) {
// module include
Loader::includeModule($moduleName);
/** @noinspection PhpIncludeInspection */
require_once($classFilePath);
return true;
}
`
так получится более осмысленно, вы проверяете есть ли директория lib и есть ли нужный файл класса, только после этого стоит инклудить сам модуль
да и проверка на директорию
if (!is_dir($moduleLibDir)) { return false; }
тоже не нужна помоему, там же в итоге проверяется путь до файла
Дельное замечание. Спасибо
в версии 3.0.4 я подключил стандартный битриксовый автозагрузчик и перенес классы модуля в lib/ так что автопоключение модулей в вашем примере будет работать и с этим модулем
Привет! Поставил модуль, но сразу после установки админка начала кидаться эксепшенами... Если нет времени, то я на досуге поковыряю и сделаю пулл-реквест