麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

Zend Framework自動加載類的實現方法

2020-03-22 19:56:31
字體:
來源:轉載
供稿:網友
  • Zend Framework中實現自動加載類。網上查了很多,有好幾種。本文收集了常用的3種,

    第一種如下:

    E0FD4B173A4E45AA9F26C3AFC6D84587

    方法很簡單,舉例說明。比如想要在models目錄下的類可以自動加載。

    先在index.php中修改include path。


    // Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array(     realpath(APPLICATION_PATH . '/../library'),     get_include_path(),realpath(APPLICATION_PATH . '/models') )));

    上述代碼里,添加包含了models的目錄。

    然后在Bootstrap.php文件下,實現一個資源方法。


    protected function _initAutoload() {             $autoloader = Zend_Loader_Autoloader::getInstance();             $autoloader->setFallbackAutoloader(true);           }

    然后在models里可以加一個類。注意文件名和類名的關系(類名要加上路徑名,用_隔開。下有示例),不然自動加載會失敗。比如加一個Nav.php的文件。內容如下:

    <?php html' target='_blank'>class Nav  { public static function getNav() {    echo "pfpf"; } } ?>

    在某個controller中,直接使用Nav類。

    Nav::getNav();

    如果models中需要加文件夾,那么相應的類名也要有更改。舉例:

    412A0F3703C3416683E6FAB52D3C637A

    在models下有新建一個newFolder文件夾,在該文件夾下面新建一個文件MKA,那么這個文件中的類名就應該是newFolder_MKA這種約定。


    <?php class newFolder_MKA  { public static function getNav() { echo "<br>MKA"; } } ?>

    默認的,index.php中已經包含了 realpath(APPLICATION_PATH . '/../library')這個路徑,即可以直接把類放到這個文件夾中,既可以實現自動加載。

    還有一種方法,和上述方法類似,只不過在資源方法中實現注冊命名空間(這里命名空間的概念和C#中命名空間概念不太一樣,這里指的是類名前面的前綴和包含類的文件夾)。假設要自動加載的類在library中,默認的index.php中的includepath已經包含了。

    E4A273299421470DA005954200E29941

    那么這些類名也要按約定加上命名空間前綴,在My目錄下的加上My_,沒有目錄的就加_。這樣的話,資源方法中只需注冊一下命名空間就行了。


    protected function _initAutoload () {     Zend_Loader_Autoloader::getInstance()     ->registerNamespace('My_')     ->registerNamespace('_'); }

    然后就可以直接調用My_Book類和_Pen類了。

    My_Book::show();

    _Pen::show();

    甚至,你也不需要在資源方法中加代碼,只需在配置文件application.ini中加入如下指令即可:


    autoloaderNamespaces[] = "My_"autoloaderNamespaces[] = "_"

    還有一種方法 ,采用Zend_Loader_Autoloader_Resource類。

    看例子,在Bootstrap.php文件下,寫一個資源方法。


            protected function _initAutoload() {             $loader = new Zend_Loader_Autoloader_Resource(array( 'basePath'  => APPLICATION_PATH ,//這里指定任何路徑,指定路徑后就在這個路徑下找 'namespace' => 'Foo',//這里的命名空間值的是類的前綴,比如這個就是類的前綴是Foo_開頭的。             ));             $loader->addResourceType('wwww', 'models', 'Modelxxx');//這個方法三個參數,分別是資源類型(貌似可以隨便填),路徑,子命名空間                //下面是源碼中對于這3個參數的說明                /**      * Add resource type      *      * @param  string $type identifier for the resource type being loaded      * @param  string $path path relative to resource base path containing the resource types      * @param  null|string $namespace sub-component namespace to append to base namespace that qualifies this resource type      * @return Zend_Loader_Autoloader_Resource      */}

    例如上面的例子,它會在APPLICATION_PATH/models/目錄下,自動加載Foo_Modelxxx_這樣的類。

    具體看下面的例子,目錄結構圖如下:

    ADN0FC$CI[_JCYVGZN(D)F1

    那現在的目標是能夠自動加載沒有folder中的類。

    對應的,第一步,指定好自動加載的basepath,即'basePath' => APPLICATION_PATH.'/myfolder',指定一個命名空間Myns。

    注意命名空間的首字母大寫,不然報錯。

    接著,加載資源類型,指定更細節的路徑和命名空間。

    所有的代碼如下:


    protected function _initAutoload() {             $loader = new Zend_Loader_Autoloader_Resource(array( 'basePath'  => APPLICATION_PATH.'/myfolder', 'namespace' => 'Myns'            ));             $loader->addResourceType('mytype', '/', 'Mysubns')             ->addResourceType('mytype2', 'mysubfolder', 'Mysubns2'); }

    其中注意命名空間首字母大寫,路徑要指對,然后具體的類名要符合響應的規則。比如例子中的類名的格式就是

    命名空間_子命名空間_類名的格式。

    具體如下:


    <?php class Myns_Mysubns2_Myclass2 {     public static function show()     { echo "myns_mysubns2_myclass2","<br>";     } }?>
    <?php class Myns_Mysubns_Myclass {     public static function show()     { echo "myns_mysubns_myclass","<br>";     } } ?>

    然后調用的是直接

    Myns_Mysubns_Myclass::show(); Myns_Mysubns2_Myclass2::show();

    就可以了。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 成人福利电影在线观看 | 麻豆视频免费网站 | 免费一级特黄毛片视频 | 国产人成精品一区二区三 | 日韩毛片网 | 成人毛片视频免费 | 国产免费观看电影网站 | 国产免费一区二区三区在线能观看 | 蜜桃免费在线 | 99精美视频| 欧美一级片免费在线观看 | 免费一级在线视频 | 国产日本在线播放 | 可以看逼的视频 | 在线观看第一区 | a免费看| 涩涩伊人 | 欧美偷拍一区二区 | 中国a毛片 | 久久欧美亚洲另类专区91大神 | 国产盼盼私拍福利视频99 | 久久综合伊人 | 亚洲午夜一区二区三区 | 99精品视频在线免费观看 | 中国精品久久 | 天海翼四虎精品正在播放 | 欧美成年人视频 | 欧美黄色试片 | 欧美一级特级 | 日日夜av| 在线男人天堂 | 国产精品久久久久久久久久久久久久久 | av电影在线观看网站 | 国产亚洲精品久久久久婷婷瑜伽 | 欧美一级做一级爱a做片性 91在线视频观看 | 久久久久久久久久久高潮一区二区 | 欧产日产国产精品99 | 毛片在线免费视频 | 精品一区久久久 | 亚洲福利在线视频 | 免费国产一级淫片 |