CI restful小試(一)

寫在前面: 既然是CI學習,固然要由淺入深,因此在說restful改造方案以前,先說說CI框架自己的哪些事兒。php

CI 框架總體屬於單例模式,爲何這麼說?要是各位有心,在應用控制器中輸出一下 $this 這個對象就會發現,CI框架的核心類實例基本都以屬性的形式賦給了 $this 這個對象。 屬性較多隻展現部分數組

那 $this 這個對象有是什麼? 其實他就是核心類(system/core中的類)中controller的實例,有心的同窗看看這個類的實現方式就會知曉,CI將其餘核心類的實例都賦值到了controller的屬性上。因此,使用CI框架的核心就是要了解如何使用控制器對象即 $this 這個對象。restful

下面咱們作一個小測試看看如何學會使用 $this 這個對象。 咱們循序漸進的來作,首先咱們再 application/controller 下新建一個控制器類 本例使用:Index.phpapp

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
/*
 * 類名符合CI命名規則,與文件名一致
 */
class Index extends CI_Controller{
        /*
         * 在本類裏咱們建立了一個默認方法
         * 在index方法中咱們打印了$this這個對象
         */
	public function index(){
		var_dump($this);
                exit();
	}
}

如今咱們訪問這個方法 http://hostname/index.php/index(控制器名)/index(方法名) 發現了嗎?這個方法的輸出和我上面的圖片同樣。 你會發現CI框架全部的核心類實例都以屬性的形式附在控制器對象裏面 因此咱們就能夠像調用普通屬性同樣調用他們。 例:框架

defined('BASEPATH') OR exit('No direct script access allowed');
/*
 * 類名符合CI命名規則,與文件名一致
 */
class Index extends CI_Controller{
        /*
         * 仍是index方法
         */
	public function index(){
                //加載試圖文件
		$this->load->view('視圖文件名');
                //加載擴展類
                $this->load->library('擴展類名');
                //調用配置文件屬性
                $config = $this->config->item('配置文件$config數組鍵名');
                ...
                其餘功能本身發掘
	}
}

那咱們從入口文件又是怎麼實例化了這個controller並調用了index這個類的index方法呢,咱們用一個圖來展現學習

調用說明圖

在CodeIgniter.php中 CI使用call_user_func_array(array(&$CI, $method), $params);來調用應用類。測試

瞭解瞭如何使用控制器,這也只是瞭解瞭如何使用CI框架自己,和咱們主題關係並不大,但要實現對CI框架的改造,咱們首先要對框架自己有必定了解,有了這些基礎咱們就能夠開始來修改這個框架讓它變成一個符合restful標準的框架。今天先寫到這裏,以後的系列文章會記錄個人改造過程。this

相關文章
相關標籤/搜索