摘要:移除中的開啟的模塊,在項目目錄中新建文件,添加如下內容獲取超級對象使用輔助函數一般情況下,輔助函數位于或者目錄目錄下。模型命名規則類名的第一個字母必須大寫,其余部分小寫。文件名和類名應該一致。
移除URL中的index.php
開啟Apache的mod_rewrite模塊,在項目目錄中新建.htaccess 文件,添加如下內容
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]獲取CI超級對象
$CI = & get_instance() $version_id = $CI->config->item("version_id");使用輔助函數
一般情況下,輔助函數位于 system/helpers 或者 application/helpers 目錄 目錄下。
加載 URL 輔助函數 ,它的文件名為 xxx_helper.php
public function use_help() { //加載單個 $this->load->helper("url"); //加載輔助函數,單個或多個 // 路徑:applicationhelpersdemo_helper.php 和 applicationhelpers est_helper.php // $this->load->helper(["demo","test"]); echo site_url(); echo base_url(); }擴展輔助函數
要擴展原始的 數組輔助函數 ,首先你要創建一個文件 application/helpers/MY_array_helper.php,然后在文件中添加或重寫函數。
https://codeigniter.org.cn/user_guide/general/helpers.html設置自定義前綴
用于擴展輔助函數的文件名前綴和擴展類庫和核心類是一樣的。要自定義這個前綴,你可以打開 application/config/config.php 文件然后找到這項:
$config["subclass_prefix"] = "MY_";使用codeigniter類庫
所有的系統類庫都位于 system/libraries/ 目錄下,大多數情況下,在使用之前, 你要先在 控制器 中初始化它,使用下面的方法
//加載類庫 $this->load->library("encrypt"); //使用加載的類庫 $tt = $this->encrypt->encode("123","132");創建自己的類庫
自定義的類庫文件應該放置在 application/libraries 目錄下,當你初始化類時,CodeIgniter 會在這個目錄下尋找這些類。
備注:
文件名首字母必須大寫,例如:Myclass.php 類名定義首字母必須大寫,例如:class Myclass 類名和文件名必須一致
例如
使用
public function use_custom_library() { //創建自定義類庫 $this->load->library("someclass"); echo $this->someclass->some_class(x);//目錄:libraries/service/emr.php,例如:$this->load->("service");調用$this->service->emr->some_fun(); }擴展原生類庫要擴展原生的類庫,只需要新建一個文件,以MY_開頭并繼承原類庫即可,示例:要擴展原Email類庫,只需命名為 application/libraries/MY_Email.php , 然后定義你的類
替換原生類庫要替換原類庫文件,只需定義與原生的類庫命名完全一樣,例如, 要替換掉原生的 Email 類的話,你要新建一個 application/libraries/Email.php 文件, 然后定義定義你的類:
更多參考
https://codeigniter.org.cn/user_guide/general/creating_libraries.html控制器控制器文件保存到 application/controllers/ 目錄下。
控制器命名規則1.`文件名`必須是大寫字母開頭,如:"Demo.php" 。 2.`類名`必須以`大寫`字母開頭。示例:
load->view("welcome_message"); } }模型模型類位于你的 application/models/ 目錄下。
模型命名規則
1.類名的第一個字母 必須`大寫`,其余部分小寫。 2.文件名和類名應該一致。例如,創建一個Demo_model.php,路徑:applicationmodelsDemo_model.php
db->get("demo", 2); return $query->result_array(); } /** * 插入記錄 */ public function insert_record($data) { $this->name = $data["name"]; $this->age = $data["age"]; $this->addr = $data["addr"]; $this->db->insert("demo", $this); } /** * 更新記錄 */ public function update_record($data) { $this->name = $data["name"]; $this->age = $data["age"]; $this->addr = $data["addr"]; $this->db->update("demo", $this, array("id" => $data["id"])); } }在控制器調用
class demo extends CI_Controller { public function use_model() { $data = [ "name" => "Daiod", "age" => 24, "addr" => "Chigo", // "id" => 8 ]; //加載model $this->load->model("demo_model"); // $this->load->model("demo/test","demoModel"); //如果model下有子目錄,則$this->load->model("xxx/xxx"); //給model定義別名 $this->load->model("demo_model","demoModel"); //調用model中的方法 $this->model_name->method(); // $res = $this->demo_model->get_last_two_record(); $res = $this->demoModel->get_last_two_record(); print_r($res); //插入記錄 // $this->demo_model->insert_record($data); //使用demo_model的別名 // $this->demoModel->insert_record($data); //更新 // $this->demo_model->update_record($data); } }打印日志修改config.php文件
/* |-------------------------------------------------------------------------- | Error Logging Threshold |-------------------------------------------------------------------------- | | You can enable error logging by setting a threshold over zero. The | threshold determines what gets logged. Threshold options are: | | 0 = Disables logging, Error logging TURNED OFF | 1 = Error Messages (including PHP errors) | 2 = Debug Messages | 3 = Informational Messages | 4 = All Messages | */ $config["log_threshold"] = 1; //默認為0,這里修改錯誤級別 error,debug,info使用
public function log_write() { //打印日志,與配置文件中設置錯誤級別對應 log_message("error", "this is error messages"); log_message("debug", "this is debug messages"); log_message("info", "this is debug messages"); echo "數據庫操作 配置
"; }配置文件路徑:CodeIgniterapplicationconfigdatabase.php
自動連接,需要修改CodeIgniterapplicationconfigautoload.php文件,$autoload["libraries"] = array(); //修改為 $autoload["libraries"] = array("database");手動連接
$this->load->database();操作查詢
public function select() { # 獲取表中所有記錄 $query = $this->db->get("demo"); //等價于 $query = $this->db->query("select * from demo"); //返回所有記錄的的數組 $data = $query->result_array(); //返回所有記錄的的數組對象 $data = $query->result(); //條件查詢 $data = $this->db->select("name", "addr") ->from("demo") ->where("name = "xiaoli"") // ->where("id >=", 1) ->limit(2) ->order_by("age") ->get() ->result_array();//返回數組 //where條件 //where(array("name"=>"mary", "id >"=>"1")); 表示name字段值是mary并且id字段值是1 //where("name", "mary")或where("name =", "mary"); 表示查詢條件是name字段值是mary //row() 只返回一行記錄,返回的是一個對象 $data = $query->row(); #row_array() 只返回一行記錄,返回的是一個數組 $data = $query->row_array(); //num_rows() 返回查詢結果行數 $data = $query->num_rows(); //num_fields() 返回查詢請求的字段個數 $data = $query->num_fields(); //free_result() 釋放當前查詢所占用的內存并刪除關聯資源標識 $data = $query->free_result(); print_r($data); #返回最后運行的查詢Sql語句 echo $this->db->last_query(); //select * from demo #獲取插入的自增Id echo $this->db->insert_id(); //寫入和更新操作被影響的行數 echo $this->db->affected_rows(); //返回指定表的總行數 echo $this->db->count_all("demo"); //輸出當前的數據庫版本號 echo $this->db->version(); //輸出當前的數據庫平臺 echo $this->db->platform(); //mysqli //查詢語句 $this->db->select("column1","column2"); //選擇查詢的字段 $this->db->get("table_name"); //表示SELECT * FROM table_name $this->db->get("table_name", 10, 20); //參數2表示每頁記錄數(limit),參數3表示偏移(offset),SELECT * FROM table_name LIMIT 20, 10 $this->db->select_max();//可接受兩個參數,參數2表示別名 $this->db->select_min();//同上 $this->db->select_avg();//同上 $this->db->select_sum();//同上 $this->db->from("table_name");//選擇表名 $this->db->join("table2","table2.pid=table.id","left");//$this->db->from("table1"); $this->db->get_where(); //示例 $this->db->get_where("table_name", array("id" => $id), $limit, $offset); $this->db->where("字段","值");// where 字段 = "值";或者where("id >",2); $this->db->or_where();//子句OR 連接 $this->db->where_in("xx",["xx","xx"]);// where_in("username",["Joe","Lucy","Lily"]); $this->db->or_where_in("xx",["xx","xx"]); $this->db->where_not_in(); $this->db->or_where_not_in(); $this->db->like("title","match");// where title like "%match%";參數3表示before(%match),after(match%),none(match)默認為both //示例 $array = array("title" => $match, "page1" => $match, "page2" => $match); $this->db->like($array); // WHERE title LIKE "%match%" AND page1 LIKE "%match%" AND page2 LIKE "%match%" $this->db->or_like(); //OR連接 $this->db->not_like(); $this->db->or_not_like(); $this->db->group_by(); $this->db->distinct(); $this->db->having(); $this->db->or_having(); $this->db->order_by(); $this->db->limit(); $this->db->count_all_results(); }插入
public function add() { //插入數據,被插入的數據會被自動轉換和過濾,例如: $data = array("name" => "xiaoming", "age" => 23, "addr" => "chognqing"); $this->db->insert("demo", $data);//insert_batch()插入多條,$data為二維數組 }更新
public function update() { // $data = array("name" => "xiaoming", "age" => 26, "addr" => "shanghai"); // $where = "name = "xiaoming""; // $this->db->update("demo", $data, $where);//demo為表名 //或者 // $this->db->where("id", 6); // $this->db->update("demo", $data); //或者 $this->db->set("key","value"); $data = ["name" => "nihao"]; $bool = $this->db->update("demo", $data, ["id" => 3]); //update_batch() //修改id為3的記錄name修改為nihao var_dump($bool);//成功則返回TURE }刪除
public function del() { // $this->db->where("id", 6); // $this->db->delete("demo"); //等價于 $bool = $this->db->delete("demo",array("id"=>5));//返回布爾值 }操作session// 使用session $this->load->library("session"); // 設置session $data = array( "username" => "johndoe", "email" => "johndoe@some-site.com", "logged_in" => TRUE ); // 設置時間, 也可在config.php中設置 $this->session->sess_expiration = "14400"; // 僅添加一個值 $this->session->set_userdata("info", $data); // 添加多個值 // $this->session->set_userdata($data); // 檢查某個 session 值是否存在 $this->session->has_userdata("info"); // 獲取session $info = $this->session->userdata("info"); // or $info = $this->session->info; // 刪除單個session $this->session->unset_userdata("info"); // 同時刪除多個值 // $array_items = array("username", "email"); // $this->session->unset_userdata($array_items);操作cookie// 加載輔助函數 $this->load->helper("cookie"); // 添加cookie setcookie("name", "lds", 86500); // or $this->input->set_cookie("name", "lds", 60); // 獲取cookie $name = get_cookie("name"); // 刪除一條 Cookie delete_cookie("name"); // 刪除多條 Cookie delete_cookie(["name", "email"]);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31229.html
摘要:行,是否強制訪問。行,嘗試處理此次請求,詳細見方法。至此,的執行主流程完畢。小結是的核心文件,它被調用后,完成了諸多的主流程操作。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 Codeigniter.php 是 CI 4 的核心所在,在這里接收并處理了 request 請求,安全檢查,緩存處理, URL 解析以及路由匹配,執行過濾器,加載運行 Controll...
摘要:行,判斷如果為空,那么返回默認路由。行,把處理完畢后找到的返回。方法該方法是自動按著約定規則去目錄去找路由的過程。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 我個人覺得在當前 MVC 流行的架構下,要想去了解一個框架,或者是一個基于此架構下的應用程序,最好的入手方式就是先看路由,雖然路由不是 MVC 里的任何一個,但是知道了路由的來龍去脈就知道了整個框架或者...
摘要:通過這個函數可以很方便的在程序運行期間執行很多常見操作。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 index.php index.php 是整個框架的入口文件,也就是說所有的請求都要從它這里開始。因為 index.php 源碼非常簡潔,那么我們直接放一張源碼截圖,按著截圖說一下源碼。 showImg(https://segmentfault.com/img/re...
摘要:版權聲明可轉載,但不論任何媒體都需要在轉載前與本人溝通,并在轉載時注明出處。的各個核心模塊以模塊名為目錄名分別存儲在這個目錄下。下一篇文章會涉及到和。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 寫在前面: 為什么選擇開發過程中的 CI 4 作為源碼解讀版本:(1)首先我選 CI 是因為它之前的穩定版都是相對比較輕量小巧的,而且可以認為是簡單的。(2)為什么沒有選...
摘要:控制器嚴格來說,這個是控制器父類的源碼。在中,控制器僅負責接到返回的組裝的頁面字符串,并回核心中,由核心再處理后續事宜。此文可以轉載,但轉載前需要發郵件到進行溝通,未溝通的均視作侵權。 前言 其實一開始我是很糾結是否要寫控制器的源碼分析的,因為控制器的源碼太少了,少到你不相信這是一個 MVC 里的一個重頭。直覺里,大家都覺得控制器作為各個請求的入口,其后端應該有很多很多的代碼支撐才可以...
閱讀 1199·2021-11-24 11:16
閱讀 3427·2021-11-15 11:38
閱讀 1919·2021-10-20 13:47
閱讀 546·2021-09-29 09:35
閱讀 2192·2021-09-22 15:17
閱讀 1012·2021-09-07 09:59
閱讀 3373·2019-08-30 13:21
閱讀 2903·2019-08-30 12:47