Пользовательские классы Pimcore

Я написал собственные классы и хочу использовать их в приложении pimcore. Я перенес их в каталог /website/lib/Custom на сервере. После этого я написал рекурсивный включатель скриптов для каждого класса, расположенного в каталоге, и включил этот скрипт в файл /index.php.

Это абсолютно не стандарт pimcore, но он работает.

В pimcore/config/startup.php есть фрагмент:

$autoloaderClassMapFiles = [
    PIMCORE_CONFIGURATION_DIRECTORY . "/autoload-classmap.php",
    PIMCORE_CUSTOM_CONFIGURATION_DIRECTORY . "/autoload-classmap.php",
    PIMCORE_PATH . "/config/autoload-classmap.php",
];
$test = PIMCORE_ASSET_DIRECTORY;
foreach ($autoloaderClassMapFiles as $autoloaderClassMapFile) {
    if (file_exists($autoloaderClassMapFile)) {
        $classMapAutoLoader = new \Pimcore\Loader\ClassMapAutoloader([$autoloaderClassMapFile]);
        $classMapAutoLoader->register();
        break;
    }
}

Я предполагаю, что это обеспечивает включение всех тех классов, которые помещаются в возвращаемый массив из autoload-classmap.php. Имея в виду, что /pimcore/config/autoload-classmap.php существует, упомянутый цикл сломается при первой итерации, поэтому классы, которые я поместил в пользовательскую карту классов автозагрузки, не будут включены в проект. .

Мой вопрос: могу ли я изменить файлы из каталога /pimcore и ожидать, что после обновления системы все будет хорошо?


person OHNH    schedule 15.09.2016    source источник


Ответы (1)


Нет, вы не должны перезаписывать что-либо в каталоге pimcore, так как файлы в нем перезаписываются механизмом обновления.

Вы можете делать то, что хотите, используя файл /website/config/startup.php, который не будет перезаписан: https://www.pimcore.org/wiki/display/PIMCORE4/Hook+into+the+процессзапуска

Но вместо того, чтобы загружать все свои классы, как вы это делали, воспользуйтесь автозагрузчиком, добавив это в /website/config/startup.php:

// The first line is not absolutely necessary, since the $autoloader variable already gets 
// set in the /pimcore/config/startup.php, but it is a more future-proof option
$autoloader = \Zend_Loader_Autoloader::getInstance(); 
$autoloader->registerNamespace('Custom');

Если вы правильно используете пространства имен и правильно называете свои файлы, это все, что вам нужно сделать.

person Igor Benko    schedule 19.09.2016