2016-09-15 75 views
1

我寫了自定義類,並希望在pimcore應用程序中使用它們。 我把它們帶到服務器上的/website/lib/Custom目錄。之後,我爲位於目錄中的每個Class編寫了遞歸腳本包含器,並將該腳本包含在/index.php文件中。Pimcore自定義類

這絕對不是pimcore標準,但它的工作原理。

在pimcore /配置/ 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; 
    } 
} 

我想,這提供包含所有這些投入返回數組從自動加載,classmap.php類。 考慮到/pimcore/config/autoload-classmap.php存在,所提及的循環會在第一次迭代時中斷,因此我將放入自定義autoload-classmap的類將不會包含在項目中。

我的問題是我可以更改/pimcore目錄中的文件,並期望系統更新後的一切都會好嗎?

回答

1

不,您不應該覆蓋pimcore目錄中的任何內容,因爲其中的文件會被更新機制覆蓋。

你可以做你想做的使用將不會被覆蓋的/website/config/startup.php: https://www.pimcore.org/wiki/display/PIMCORE4/Hook+into+the+startup-process

但不是加載所有的類都像你一樣,利用自動加載器通過添加該到/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'); 

,並命名您的文件正確這就是你需要做的。