首先,我在手机上打字。如果我不能使用编码缩进,我很抱歉。
假设我有一个名为XYZ的自定义库,它位于/ library /下。
我可以将它添加到application.INI中 autoloaderNameSpaces [] =“XYZ”
现在我在这个文件夹/ library / XYZ / fld1 / fld2 / fld3 /下面有一个类Example.php。我知道我可以通过使用来调用它 XYZ_fld1_fld2_fld3_Example.php
但是我如何定义一个缩短的命名空间,例如“Short”,所以我可以通过使用来调用这个文件 Short_Example.php
再次感谢并抱歉记错了。
答案 0 :(得分:0)
要执行您必须使用插件加载器的功能。使用插件加载器加载类。
这是一个加载器类,用于在/ library / Xyz / Fld1 / Fld2 / Fld3 /目录中加载自定义类
这是一个代码示例。
<?php
class Xyz_Core
{
/**
* File name Core.php inside Xyz directory
*
* Loader for parsers
*
* @var Zend_Loader_PluginLoader
*/
protected $_pluginLoader;
/**
* Gets the plugin loader
*
* @return Zend_Loader_PluginLoader
*/
public function getPluginLoader()
{
if( null === $this->_pluginLoader )
{
$this->_pluginLoader = new Zend_Loader_PluginLoader(array(
'Xyz_Fld1_Fld2_Fld3_' => 'XYZ/fld1/fld2/fld3/'
));
}
return $this->_pluginLoader;
}
/**
* Get a helper
*
* @param string $name
*/
public function getHelper($name)
{
$name = $this->_normalizeHelperName($name);
if( !isset($this->_helpers[$name]) )
{
$helper = $this->getPluginLoader()->load($name);
$this->_helpers[$name] = new $helper;
}
return $this->_helpers[$name];
}
/**
* Normalize helper name
*
* @param string $name
* @return string
*/
protected function _normalizeHelperName($name)
{
$name = preg_replace('/[^A-Za-z0-9]/', '', $name);
//$name = strtolower($name);
$name = ucfirst($name);
return $name;
}
}
$api = new Xyz_Core();
/*
* To load object of class Example.php
*/
$obj = $api->getHelper('Example');
/*
* Or To load include the file only of class Example.php
*/
$class = $api->getPluginLoader()->load('Example');
$obj = new $class($param1, $param2, $etc);