【问题标题】:Pimcore custom classesPimcore 自定义类
【发布时间】:2016-09-19 18:05:28
【问题描述】:

我编写了自定义类并希望在 pimcore 应用程序中使用它们。 我把它们带到服务器上的 /website/lib/Custom 目录。之后,我为目录中的每个类编写了递归脚本包含器,并将该脚本包含在 /index.php 文件中。

这绝对不是 pimcore 标准,但它可以工作。

在 pimcore/config/startup.php 中存在 sn -p:

$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 存在,提到的循环将在第一次迭代时中断,因此我将放入自定义 autoload-classmap 的类不会包含在项目中.

我的问题是我可以从 /pimcore 目录中更改文件并期望在系统更新后一切都会好起来吗?

【问题讨论】:

    标签: php dependencies content-management-system 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');
    

    如果您正确使用命名空间并正确命名文件,这就是您需要做的所有事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 2021-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-03-10
      相关资源
      最近更新 更多