1. 程式人生 > >Codeigniter 擴充套件核心類

Codeigniter 擴充套件核心類

在專案中我們通常需要一個自己的基類控制器,一般命名為 BaseController,在其他框架如 Laravel 框架中,我們只需要新建一個 BaseController 讓他繼承專案初始的基類就可以了,示例

 但在 Codeigniter 中,這種方式是行不通的,在 CI 中有另外一套擴充套件核心類庫的方法, CI_Controller 預設不屬於原生類庫,它是一個系統類庫,是一個核心類,不能使用建立類庫中的擴充套件原生類庫的方法去擴充套件,而是應該使用建立核心系統類中的擴充套件核心類的方法去擴充套件這個類.將需要擴充套件的核心類放入目錄 application/core下,示例

 程式碼示例

<?php

    /**
     * Created by PhpStorm.
     * User: nwei
     * Date: 2018/10/9
     * Time: 10:11
     *
     *    .--,       .--,
     *   ( (  \.---./  ) )
     *    '.__/o   o\__.'
     *       {=  ^  =}
     *        >  -  <
     *       /       \
     *      //       \\
     *     //|   .   |\\
     *     "'\       /'"_.-~^`'-.
     *        \  _  /--'         `
     *      ___)( )(___
     *     (((__) (__)))    高山仰止,景行行止.雖不能至,心嚮往之.
     *
     */
    class MY_Controller extends CI_Controller {

        /**
         * MY_Controller constructor.
         */
        public function __construct() {
            parent::__construct();
        }
    }

 擴充套件的核心類會自動載入,不需要手動載入,使用示例

<?php

    /**
     * Created by PhpStorm.
     * User: nwei
     * Date: 2018/9/27
     * Time: 15:28
     *
     *    .--,       .--,
     *   ( (  \.---./  ) )
     *    '.__/o   o\__.'
     *       {=  ^  =}
     *        >  -  <
     *       /       \
     *      //       \\
     *     //|   .   |\\
     *     "'\       /'"_.-~^`'-.
     *        \  _  /--'         `
     *      ___)( )(___
     *     (((__) (__)))    高山仰止,景行行止.雖不能至,心嚮往之.
     *
     */
    class CustomHttp extends MY_Controller {

        public function index() {
            echo "customhttp--index";
        }
    }

 

參考

https://stackoverflow.com/questions/21399248/class-my-controller-not-found-after-download-from-webserver

https://codeigniter.org.cn/user_guide/general/core_classes.html

https://codeigniter.org.cn/user_guide/general/creating_libraries.html