ci目錄結構 php
|-----system 框架程序目錄 |-----core 框架的核心程序 |-----CodeIgniter.php 引導性文件 |-----Common.php 加載基類庫的公共函數 |-----Controller.php 基控制器類文件:CI_Controller |-----Model.php 基模型類文件:CI_Model |-----Config.php 配置類文件:CI_Config |-----Input.php 輸入類文件:CI_Input |-----Output.php 輸出類文件:CI_Output |-----URL.php URL類文件:CI_URl |-----Router.php 路由類文件:CI_Router |-----Loader.php 加載類文件:CI_Loader |-----helpers 輔助函數 |-----url_helper.php url相關的輔助函數,如:建立url的輔助函數 |-----captcha_helper.php建立圖形驗證碼的輔助函數 |-----libraries 通用類庫 |-----Pagination.php 通用分頁類庫 |-----Upload.php 通用文件上傳類庫 |-----Image_lib.php 通用圖像處理類庫 |-----Session.php 通用session類庫 |-----language 語言包 |-----database 數據庫操做相關的程序 |-----DB_active_rec.php 快捷操做類文件(ActiveRecord) |-----fonts 字庫 |-----application 項目目錄 |-----core 項目的核心程序 |-----helpers 項目的輔助函數 |-----libraries 通用類庫 |-----language 語言包 |-----config 項目相關的配置 |-----config.php 項目相關的配置文件 |-----database.php 數據庫相關的配置文件 |-----autoload.php 設置自動加載類庫的配置文件 |-----constants.php 常量配置文件 |-----routes.php 路由配置文件 |-----controllers 控制器目錄 |-----welcome.php 控制器文件,繼承CI_Controller |-----models 模型目錄 |-----welcome_model.php 模型文件,繼承CI_Model |-----views 視圖目錄 |-----welcome.php 視圖模板文件,默認後綴名爲.php |-----cache 存放數據或模板的緩存文件 |-----errors 錯誤提示模板 |-----hooks 鉤子,在不修改系統核心文件的基礎上擴展系統功能 |-----third_party 第三方庫 |-----logs 日誌 |-----index.php 入口文件
訪問形式 html
在\application\controllers\welcome.php中添加函數:sql
public function hello() { echo "test"; }
CI的訪問url使用的是pathinfo,入口文件.php/控制器/動做數據庫
本身新建控制器,hello.php:數組
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Hello extends CI_Controller { public function sayHello($name) { echo $name,",Hello World"; } } ?>
注意:緩存
加載視圖 session
application\views\view_test.php或者application\views\view\test.php(這中作法主要是方便同一類型的視圖能夠放在同一個文件夾下方便管理)app
<html> <head> </head> <body> test_ci_hello_world </body> </html>
控制器:框架
public function addView() { $this->load->view("view_test"); }
或者:函數
public function addView2() { $this->load->view("view/test"); }
效果:
分配變量
把數據從控制器中傳到視圖中,控制器:
public function addView() { $this->load->vars("title","value"); $list = array( array('id'=>1,'name'=>'jack','email'=>'123@123.com'), array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'), array('id'=>3,'name'=>'jack3','email'=>'12333@123.com') ); $data['new_title']="標題"; $data['list']=$list; $this->load->vars($data); $this->load->view("view_test"); }
視圖:
<html> <head> </head> <body> <h1><?php echo $title;?></h1> <h1><?php echo $new_title;?></h1> test_ci_hello_world <table> <?php foreach($list as $item):?> <tr> <td><?=$item['id']?></td> <td><?=$item['name']?></td> <td><?=$item['email']?></td> </tr> <?php endforeach;?> </table> </body> </html>
效果:
load網站進去,控制器:
public function addView() { $this->load->vars("title","value"); $list = array( array('id'=>1,'name'=>'jack','email'=>'123@123.com'), array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'), array('id'=>3,'name'=>'jack3','email'=>'12333@123.com') ); $data['new_title']="標題"; $data['list']=$list; $this->load->vars($data); $this->load->view("view_test"); $this->load->view("footer"); }
視圖view_test:
<html> <head> </head> <body> <h1><?php echo $title;?></h1> <h1><?php echo $new_title;?></h1> test_ci_hello_world <table> <?php foreach($list as $item):?> <tr> <td><?=$item['id']?></td> <td><?=$item['name']?></td> <td><?=$item['email']?></td> </tr> <?php endforeach;?> </table>
視圖footer:
CI_hello_world!!! </body> </html>
顯示效果:
uri參數獲取
控制器:
public function getUri($id,$name,$year) { echo "id--->".$id."---name--->".$name."---year--->".$year."<br />"; echo "segment(1)--->".$this->uri->segment(1)."<br />"; echo "segment(2)--->".$this->uri->segment(2)."<br />"; echo "segment(3)--->".$this->uri->segment(3)."<br />"; echo "segment(4)--->".$this->uri->segment(4)."<br />"; echo "segment(5)--->".$this->uri->segment(5)."<br />"; }
效果:
加載數據庫
這個操做在MVC中是放到model中作的。
在\application\config\database.php中配置數據庫參數,注意dbprefix和swap_pre這兩個參數。在php中寫的是前綴,會默認看成swap_pre,而後放到數據庫中的時候會轉成dbprefix,可是最好兩個都弄成同樣的。
還有$active_group,默認是default,若是要鏈接兩個數據庫,把default另外取名,而後在函數中寫明參數就OK。
必須繼承數據核心類CI_Model,同時重載父類中的構造方法。
class Model_name extends CI_Model { function __construct() { parent::__construct(); } }
在每次使用數據庫的時候,都須要加載一次數據庫:
$this->load->database();
爲了方便,能夠將數據庫的加載設置成自動加載,在\application\config\autoload.php中。
$autoload['libraries'] = array('database');
對於數據庫訪問對象,裝載到超級對象的屬性中 $this->db
$res = $this->db->query($sql);//返回對象 $res->result();//返回數組,數組中是一個一個的對象 $res->result_array();//返回二維數組,裏面是關聯數組 $res->row();//返回第一條數據,直接是一個對象
AR操做數據庫
在database.php文件中,將$active_recoed的值改成TRUE,這樣就能夠使用AR了。
//查詢 public function index() { $res = $this->db->get('表名');//這裏自動調用前綴 foreach($res->result() as $item) { echo $item->name."<br />"; } }
//插入 public function index() { $data=array( 'name'=>'lisi', 'password'=>md5('lisi') ); $bool = $this->db->insert("表名",$data); var_dump($bool); }
//更新 public function index() { $data=array( 'name'=>'wangwu', 'password'=>md5('wangwu') ); $bool = $this->db->update('表名',$data,array('id'=>3)); var_dump($bool); }
//刪除 $bool = $this->db->delete('表名',array('id'=>2)); var_dump($bool);