作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在“ native ”Zend Framework 应用程序中,我将通过将 ezComponents 的自动加载器添加到 Zends 自动加载器来启用 ezComponents:
$autoLoader = Zend_Loader_Autoloader::getInstance();
require_once('../library/EZComponents/Base/src/base.php');
$autoLoader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc');
if(substr($class, 0, 3) == 'ezc'){
require_once('EZComponents/Base/src/base.php');
return ezcBase::autoload($class);
}
最佳答案
我在这里的基本方法是创建一个带有观察者的自定义模块
controller_front_init_before
controller_front_init_before
event 是 Magento 中第一个触发的非泛型事件之一。这就是我们使用它的原因。
Varien_Autoloader
来自 spl_autoload stack
Zend_Autoloader
,因为它是 Magento 附带的,您似乎对它很熟悉)Varien_Autoloader
到堆栈Zend
中的类后,我们需要做一些额外的游戏命名空间通常由我们将要删除的自动加载器处理。更多细节见评论
//we need to manually include Zend_Loader, or else our zend autoloader
//will try to use it, won't find it, and then try to use Zend_Loader to
//load Zend_Loader
require_once('lib/Zend/Loader.php');
//instantiate a zend autoloader first, since we
//won't be able to do it in an unautoloader universe
$autoLoader = Zend_Loader_Autoloader::getInstance();
//get a list of call the registered autoloader callbacks
//and pull out the Varien_Autoload. It's unlikely there
//are others, but famous last words and all that
$autoloader_callbacks = spl_autoload_functions();
$original_autoload=null;
foreach($autoloader_callbacks as $callback)
{
if(is_array($callback) && $callback[0] instanceof Varien_Autoload)
{
$original_autoload = $callback;
}
}
//remove the Varien_Autoloader from the stack
spl_autoload_unregister($original_autoload);
//register our autoloader, which gets on the stack first
require_once('library/EZComponents/Base/src/base.php');
$autoLoader->pushAutoloader(array('ezcBase', 'autoload'), 'ezc');
//lets just make sure we can instantiate an EZ class
#$test = new ezcBaseFile();
#var_dump(get_class($test));
//IMPORANT: add the Varien_Autoloader back to the stack
spl_autoload_register($original_autoload);
$o = Mypackage_Mymodule_Loader::getModel('ezcBaseFile');
ezcBaseFile
上调用静态方法,您可能需要在不实例化对象的情况下加载类的方法。基类。
$o = Mypackage_Mymodule_Loader::getLoadclass('ezcBaseFile');
关于magento - 如何将 ezComponents 与 magento 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085967/
我是一名优秀的程序员,十分优秀!