php - Zend Framework 中类似 Magento 的代码池

标签 php zend-framework magento

我真的很喜欢 Magento 使用代码池的方式,这样就可以在不实际更改代码的核心功能的情况下扩展类和功能。

(对于那些不熟悉 Magento 的人,你可以在“核心”代码池和“本地”代码池中使用相同的类,当你创建一个类时,它首先会在“本地”代码池中查找,如果是不存在它看起来在“核心”代码池中)

我知道 Magneto 使用 Zend Framework,所以我想知道 Varien 是否使用了 Zend Framework 中已有的东西,或者他们是否自己这样做了?或者,如果有人知道在 Zend Framework 中是否有有效执行此操作的好方法?

最佳答案

我不知道 Magento 是怎么做到的(tipp:看看他们的源代码),但你可能可以用 Zend_Autoloader 实现同样的效果,例如当尝试加载类 Foo_Bar_Baz 时,自动加载器将首先查看 Local/Foo/Bar/Baz,如果文件不存在,它将尝试从 加载核心/Foo/Bar/Baz.


Note: If anyone's interested, take a look at the top of app/Mage.php (excerpt follows) to see how this gets set. --Alan

if (defined('COMPILER_INCLUDE_PATH')) {
    $appPath = COMPILER_INCLUDE_PATH;
    set_include_path($appPath . PS . Mage::registry('original_include_path'));
    include_once "Mage_Core_functions.php";
    include_once "Varien_Autoload.php";
} else {
    /**
     * Set include path
     */
    $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
    $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
    $paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
    $paths[] = BP . DS . 'lib';

    $appPath = implode(PS, $paths);
    set_include_path($appPath . PS . Mage::registry('original_include_path'));
    include_once "Mage/Core/functions.php";
    include_once "Varien/Autoload.php";
}

关于php - Zend Framework 中类似 Magento 的代码池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4164851/

相关文章:

php - magento session 文件需要保存多长时间?

css - 链接样式被 magento 默认链接样式覆盖

PHP readdir 点不断显示

php - 将文本列从 mysql 以 HTML 格式加载到 php

PHP警告: PHP Startup: Unable to load dynamic library 'bz2'

php - Zend_Service_Twitter - 在尝试任何 API 之前使用其 OAuth 功能获取访问 token

javascript - Krajee 文件输入仅上传最后选择的图像

带有 mysql 变量的 Mysql 查询在 Zend Framework 1 中不起作用

zend-framework - Zend_Validate_Float 语言环境不适用于 hi_IN 语言环境

Magento:单独域上的管理员