Pimcore 自定义 类

Pimcore custom classes

我编写了自定义 类 并想在 pimcore 应用程序中使用它们。 我把它们带到服务器上的 /website/lib/Custom 目录。之后,我为目录中的每个 Class 编写了递归脚本包含程序,并将该脚本包含在 /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 目录中的文件并期望在系统更新后一切正常吗?

不,您不应该覆盖 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');

如果您正确使用命名空间并正确命名您的文件,这就是您需要做的全部。