编程语言
首页 > 编程语言> > php-Zend框架中类似Magento的代码池

php-Zend框架中类似Magento的代码池

作者:互联网

我非常喜欢Magento使用代码池的方式,以便可以在不实际更改代码核心功能的情况下扩展类和功能.

(对于不熟悉Magento的用户,您可以在“核心”代码池和“本地”代码池中拥有相同的类,当您创建类时,它首先会在“本地”代码池中查找,如果不存在,看起来在“核心”代码池中)

我知道Magneto使用Zend Framework,所以我想知道Varien是否使用Zend Framework内部已经存在的东西,如果他们自己这样做?或者,如果有人知道在Zend Framework中是否有一种有效的方法可以有效地做到这一点?

解决方法:

我不知道Magento是如何做到的(提示:看他们的源代码),但是您可能可以使用Zend_Autoloader来实现相同的功能,例如尝试加载Foo_Bar_Baz类时,自动加载器将首先在Local / Foo / Bar / Baz中查找,如果文件不存在,它将尝试从Core / 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";
}

标签:magento,zend-framework,php
来源: https://codeday.me/bug/20191209/2095566.html