CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库
一、基本結構
CodeIgniter3.0.0解壓后有8個文件,分別是:
- application:項目文件
- system:系統(框架)文件,為方便升級,不建議修改
- user_guid:用戶手冊,不需要加入項目
- composer.json:composer配置文件,不需要加入項目
- contributing.md:如何參與項目貢獻代碼,不需要加入項目
- index.php:項目入口文件
- license.txt:許可文件,不需要加入項目
- readme.rst:說明文件,不需要加入項目
二、控制器Controller
控制器在application文件夾中的controllers文件夾中,默認控制器為welcome,有4小點需要注意:
1、控制器類名不需要加后綴
2、控制器文件名建議小寫
3、控制器要直接或間接繼承自CI_Controller類
4、可訪問的action方法名不能以下劃線開頭,且訪問權限要是public的
三、視圖View
視圖在application文件夾中的views文件夾中,幾個tips:
1、在控制器中用如下代碼加載views中的視圖:
//加載views文件夾中的user_index.php視圖文件 $this -> load -> view('user_index');//加載views/user文件夾中的index.php視圖文件 $this -> load -> view('user/index');2、在視圖中,可以直接使用原生的php代碼
3、在控制器中可以通過以下方式向視圖中輸出變量:
<?phpclass User extends CI_Controller {public function index() {$data = array('username' => 'jim','books' => array('a', 'b', 'c', 'd'));$head = array('title' => 'TITLE','subtitle' => 'SUB TITLE');$this -> load -> vars('data', $data);//公共部分$this -> load -> view('header');$this -> load -> view('user/index', $head);}} ?>在視圖中用如下方式獲取變量:
<!DOCTYPE html> <html> <head><title>User</title> </head> <body><h1>User</h1><?php var_dump($data); ?><?php var_dump($title); ?> </body> </html>四、CI的超級對象
CI中的超級對象即為當前的控制器對象。在視圖中也可以直接使用$this訪問超級對象。
超級對象提供了很多屬性:
1、$this -> load ,裝載器,主要提供了如下方法:
- view:裝載視圖
- vars:分配變量到視圖
- database:裝載數據庫操作對象
- model:裝載模型
- helper:加載幫助文件
2、$this -> uri,解析URL相關內容,主要提供如下方法:
segment:按索引(控制器為1)獲取分段url值(類pathinfo沒有key的模式:入口.php/控制器/動作/參數1/參數2。。。),示例如下
- <?phpclass User extends CI_Controller {///index.php/user/index/id/abc/name/godpublic function index($param1, $param2) {$param3 = $this -> uri -> segment(5);var_dump(array('param1' => $param1,'param2' => $param2,'param3' => $param3));/*array (size=3)'param1' => string 'id' (length=2)'param2' => string 'abc' (length=3)'param3' => string 'name' (length=4)*/$this -> load -> view('user/index');}} ?>
3、$this -> input,主要用于取post和server數據,使用方法如下:
<?phpclass User extends CI_Controller {public function index() {$username = $this -> input -> post('username');$ip = $this -> input -> server('REMOTE_ADDR');echo $ip;//127.0.0.1$this -> load -> view('user/index');}} ?>五、數據庫操作
數據配置文件在 application/config/database.php 中。
1、查詢示例
<?phpclass User extends CI_Controller {public function index() {$this -> load -> view('user/index');}public function showusers() {$this -> load -> database();$sql = 'select * from ci_test';$res = $this -> db -> query($sql);$users = $res -> result();var_dump($users);/*array (size=1)0 =>object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'jim' (length=5)public 'title' => string 'ci learn' (length=8)*/$users2 = $res -> result_array();/*array (size=1)0 =>array (size=3)'id' => string '1' (length=1)'name' => string 'atwal' (length=5)'title' => string 'ci learn' (length=8)*/var_dump($users2);$firstUser = $res -> row();var_dump($firstUser);/*object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'atwal' (length=5)public 'title' => string 'ci learn' (length=8)*/$this -> load -> view('user/show');}} ?>要先調用 $this -> load -> database()進行裝載數據庫,然后才能使用 $this -> db 對象。
2、插入示例
?
public function add() {$this -> load -> database();$sql = "insert into swap_test(name,title) values ('jim', 'jim learn ci')";$bool = $this -> db -> query($sql);if ($bool) {//受影響行數echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();} }?
3、參數綁定示例
為了安全,阻止SQL注入,建議用參數綁定的形式操作數據庫。
public function addsafe() {//配置自動加載db//application\config\autoload.php//$autoload['libraries'] = array('database');//$this -> load -> database();$data[0] = 'lili';$data[1] = 'lili';$sql = "insert into swap_test(name,title) values (?,?)";$bool = $this -> db -> query($sql, $data);if ($bool) {//受影響行數echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();} }4、表前綴
為了應對數據庫表前綴變化,CI數據庫配置(application\config\database.php)中有下面兩項:
$db['default'] = array('dbprefix' => 'ci_','swap_pre' => 'swap_', );swap_pre的作用是,在代碼中用swap_pre來替換dbprefix,可以達到換數據庫表前綴不改代碼的目地(即在代碼中表前綴用swap_pre值就好)。
5、自動加載db對象
在每次數據庫操作前都要加載database才可以使用db對象,顯得比較麻煩,可以用CI中的自動加載能力簡化這一步:
//配置自動加載db //application\config\autoload.php //$autoload['libraries'] = array('database');配置完后,就可以直接使用$this -> db 對象了。
?
轉載于:https://www.cnblogs.com/lurenjiashuo/p/ci-note-basic-1.html
總結
以上是生活随笔為你收集整理的CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转] vim 正则表达式 很强大
- 下一篇: s:property的用法