2013-08-30 33 views
0

首先,我在手機上輸入這個。所以我很抱歉,如果我不能使用編碼縮進。Zend自定義庫縮短命名空間

說我有一個名爲XYZ的自定義庫,它位於/ library /下。

我可以作爲 autoloaderNameSpaces [] = 「XYZ」

現在我有一個類使用example.php此文件夾/庫/ XYZ/FLD1/FLD2/fld3 /下到的application.ini添加此。我知道我可以通過使用 XYZ_fld1_fld2_fld3_Example.php

叫它但是我怎麼定義一個命名空間縮短,例如,「短」,所以我可以用 Short_Example.php

感謝和遺憾,稱此文件再次爲壞記號。

+0

user834045請檢查我的答案 –

回答

0

要做的功能,你必須使用插件加載器。使用插件加載器加載類。

這是一個加載器加載類的/庫/ 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);