--------------------------------------------------------------------------------------------------------------------------------------------------javascript
授課過程當中若是涉及到文件夾或目錄時,可以使用縮進進行演示:php
applicationcss
|-----librarieshtml
|-----xxx_helper.php前端
systemjava
|-----librariesweb
|-----url_helper.phpsql
-----------------------------------------------------------------------------------------------------------------------------------------------------thinkphp
1、什麼是框架?數據庫
2、框架的優缺點分析及爲何要選擇框架$route['default_controller'] = "common";//默認執行的控制器
二10、如何設置url路由及url後綴
$config['url_suffix'] = '';//url後綴,如:http://www.kuxiu.net/common/index.html
二11、總結:
一、關於縮略圖的配置項目能夠放在config.php文件中
二、$this->db->insert("user",$data);//要求數據表中除主鍵字段外,其它字段在$data關聯數組中都有默認值才能執行成功,提示:$data通常爲一維關聯數組
$this->db->insert_batch("user",$data);//$data通常爲二維關聯數組
三、跳轉:header("location:".site_url("common/login"));
四、設置時區
$config['time_zone']=date_default_timezone_set('Asia/shanghai');
五、推薦使用鏈式操做
$query=$this->db->query($sql);
$data_array=$query->result_array();
等價於:
$data_array=$this->db->query($sql)->result_array();
六、如何配置ueditor編輯器文件上傳的路徑,如:將圖片上傳到根目錄下面的 php/upload/ 下
首先:將ueditor/php/ 文件夾複製粘貼到根目錄下
而後:在模板文件中修改文件上傳路徑:
{literal}
<!--注意:js文件的引入必須在body體中,不然不生效-->
<script type="text/javascript" src="http://www.kuxiu.net/public/js/ueditor/editor_config.js"></script>
<script type="text/javascript" src="http://www.kuxiu.net/public/js/ueditor/editor_all.js"></script>
<script type="text/javascript">
var ue = new UE.ui.Editor({
initialFrameWidth:750,//編輯器初始化寬度
initialContent:'',//編輯器初始化內容
imagePath:"/php/",//圖片上傳路徑,默認狀況下圖片上傳路徑的upload文件夾與圖片上傳腳本同目錄,因此這樣配置生成以下效果:"/php/upload/"
imageUrl:"/php/imageUp.php"//圖片上傳腳本文件
}
);
ue.render('content')//給id爲content的textarea表單控件渲染一個編輯器
</script>
{/literal}
思考:默認狀況下,編輯器是按照日期自動建立存儲的文件夾的,如何修改這一規律?
找到php/Upload.class.php文件中的getFolder()函數,修改以下:
/**
* 按照日期自動建立存儲文件夾
* @return string
*/
private function getFolder(){
$pathStr = $this->config[ "savePath" ];//保存路徑
if ( strrchr( $pathStr , "/" ) != "/" ) {//保存路徑必須以"/"結尾
$pathStr .= "/";
}
$pathStr .= date( "Ymd" );//年月日
if ( !file_exists( $pathStr ) ) {//若是目錄不存在
if ( !mkdir( $pathStr , 0777 , true ) ) {//層級建立目錄
return false;//建立失敗返回false
}
}
///return $pathStr;//建立成功返回路徑
}
七、系統加載類庫:core/Loader.php
以下函數都在此類庫中定義
$this->load->model("");
$this->load->library("");
$this->load->database("");
$this->load->helper("");
$this->config->load();
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php 一、在講解文件所在目錄方面的問題時: application |-----core |-----MY_Controller.php system |-----core |-----Controller.php 思路: 1、目前在企業中使用比較多的框架有以下幾種: 一、zendframework框架:此框架由zend公司開發並負責維護,入門比較困難一點,可是聽說功能很強悍,屬於一款偏重量級的MVC框架 二、Yii框架:又稱爲 "易框架",在外企使用居多 三、thinkphp框架:是國人開發的一款框架,因爲它的註釋和使用文檔都是中文,因此很受國人的喜歡 四、codeigniter框架:簡稱CI框架,是國外一款流行的框架,跟前面的框架比較,ci框架是最輕量級的,也是最容易上手的 2、咱們選擇這款框架來學習,主要有如下幾點緣由: 一、ci是一個輕量級的框架,關於輕量級,可從兩方面來理解: 一、體積小,解壓後不到4M,zendframework解壓後60M左右 二、佔用資源少:ci應用程序在運行的時候,只是將正常運行所必須的幾個核心類庫載入到了內存中,其它類庫在請求的時候纔會加載,這樣就達到了資源的最小化,這跟那些須要不少資源的框架是不同的,有些框架在運行的時候,會將全部的類庫首先載入內存中,而無論這些類庫是否可以用的到,如:cakephp 三、可是這個輕量級,並不影響它開發大型的web應用程序,爲何這麼說呢? 首先,它自身所提供的類庫,已經可以幫助咱們完成web應用程序中的大部分功能 再者,ci框架在整合第三方類庫方面也有獨到的優點,幾乎不須要進行任何配置 二、整合第三方類庫簡單,幾乎不須要進行任何配置 三、不須要使用模板引擎技術 你們知道,php原生態的語法結構執行效率是最高的,由於跟使用了模板引擎技術的程序相比較,它少了一個編譯的過程 3、下面,咱們就來進行ci框架的安裝: ci框架的安裝,咱們只須要按照以下步驟進行操做就能夠了 一、官網:http://www.codeigniter.com 去下載ci框架最新的版本,目前最新版本爲2.1.3 中文網站:http://www.codeigniter.org.cn 二、下載完畢後,解壓,並將其複製粘貼到程序的主目錄(d:/wamp/xmall/),而後再將其重命名爲"myshop",那麼"myshop" 就做爲ci項目名稱存在了 三、爲咱們的ci項目搭建一個虛擬主機: 首先,找到httpd.conf配置文件,開啓虛擬主機的配置 而後,找到httpd-vhosts.conf配置文件,進行虛擬主機的配置 最後,找到hosts配置文件,爲咱們的ci項目添加dns映射 四、在瀏覽器中輸入 http://www.myshop.com/index.php 回車,如能看到以下歡迎界面,則表示咱們的ci項目安裝成功了 4、ci框架的目錄結構分析: 瞭解ci框架的目錄結構,有助於幫助咱們快速創建起對ci框架的一個總體認識 打開"myshop"項目,有以下文件和目錄 使用協議說明文檔、英文版的用戶手冊,這兩項不是項目所必須的,可暫時將其刪除 myshop |-----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 入口文件 5、ci框架中的url路由規則: 瀏覽器中輸入 http://www.myshop.com/index.php/welcome/index/ 回車時,默認狀況下會找到 application |-----controllers |-----welcome.php 控制器文件,並執行其中的index方法 |-----admin 子目錄 |-----category.php 控制器文件 究竟是不是呢?咱們打開welcome.php控制器文件,並在index方法中添加一些代碼,運行輸出,證實確實如咱們所料 咱們能夠將瀏覽器中的url概括以下:http://域名/入口文件/控制器/方法/參數列表 當輸入網址回車時,默認狀況下會直接從controllers目錄下尋找控制器文件, 若是咱們的控制器文件放在controllers目錄下的子目錄中,又該如何訪問呢? 例如:在controllers目錄創建一個admin子目錄,而後呢,在admin子目錄下建立一個category.php控制器文件 那麼,咱們在訪問category.php控制器文件中的addcategory方法時,在瀏覽器中怎樣訪問呢? 咱們能夠這樣來訪問: http://www.myshop.com/index.php/admin/category/addcategory/ 即:http://域名/入口文件/controllers下的子目錄/控制器/方法/參數列表 咱們在瀏覽器中輸入http://www.myshop.com/index.php 後面沒有跟 "控制器/方法/參數列表" 回車時,默認狀況下也會執行welcome.php控制器中的index方法。 這是由於ci框架爲咱們指定了一個默認的控制器和方法 默認控制器的設置在 "application/config/routes.php" 配置文件中進行設置的,咱們能夠從新設置默認的控制器 6、項目的部署:咱們在實際部署大型項目時,還能夠創建一些子目錄及文件來幫助咱們更好的管理咱們的項目 一、子目錄及入口文件的建立 controllers |-----admin 後臺控制器 |-----home 前臺控制器 models |-----admin 後臺模型文件 |-----home 前臺模型文件 views |-----admin 後臺模板文件 |-----category 後臺商品分類模塊相關的模板文件 |-----addcategory.html |-----public 後臺公共模板文件 |-----top.html |-----left.html |-----footer.html |-----home 前臺模板文件 core |-----MY_Controller.php 擴展後的控制器文件,繼承CI_Controller public 素材文件 |-----images images文件 |-----admin 後臺images文件 |-----home 前臺images文件 |-----css css文件 |-----admin 後臺css文件 |-----home 前臺css文件 |-----js js文件 |-----admin 後臺js文件 |-----home 前臺js文件 uploads 上傳附件 admin.php 後臺入口文件:訪問後臺控制器,都必須通過admin.php入口 index.php 前臺入口文件:訪問前臺控制器,都必須通過index.php入口 二、將後臺模板文件及素材文件部署到咱們的ci項目中來 css文件中採用絕對路徑 模板文件中採用絕對路徑 三、創建後臺控制器文件: application |-----controllers |-----admin |-----index.php index.php控制器文件 |-----user.php 用戶控制器文件 控制器的命名規範 $this->load->view("admin/index.html");//將後臺模板文件顯示出來 四、將先後臺素材文件的路徑寫到常量文件中:application/config/constants.php define("IMG_PATH","http://www.myshop.com/public/images/"); //images路徑 define("CSS_PATH","http://www.myshop.com/public/css/"); //css路徑 define("JS_PATH","http://www.myshop.com/public/js/"); //js路徑 直接在控制器中獲取常量的值: $data['img_path']=IMG_PATH; $data['css_path']=CSS_PATH; $data['js_path']=JS_PATH; 將$data數組傳遞給模板文件: $this->load->view("admin/index.html",$data);//參數2:關聯數組 五、也能夠將素材文件的路徑放到application/config/config.php配置文件中 $config['img_path']="http://www.myshop.com/public/images/"; $config['js_path']="http://www.myshop.com/public/css/"; $config['js_path']="http://www.myshop.com/public/js/"; 在控制器中獲取application/config/config.php配置文件中的配置項: $data['img_path']=$this->config->item("img_path"); $data['css_path']=$this->config->item("css_path"); $data['js_path']=$this->config->item("js_path"); 將$data數組傳遞給模板文件 $this->load->view("admin/index.html",$data);//參數2:關聯數組 六、創建後臺模型文件: application |-----models |-----admin |-----user_model.php 用戶模型文件 模型文件的命名規範 如何在控制器中調用模型文件: //一、實例化後臺的user_model類對象,對象名稱爲user_model //二、將user_model實例化對象做爲控制器的user_model屬性 //三、所以,咱們能夠在控制器中經過 $this->user_model 來獲取user_model類對象,繼而能夠調用對象中的方法 $this->load->model("admin/user_model"); $this->user_model->adduser(); 七、數據庫操做: 數據表的建立:gt_users 導入一些數據 查詢用戶:首先在model中鏈接數據庫,$this->load->database();而後咱們能夠在模型類的方法中查詢全部的數據 在ci框架中操做數據庫可分爲兩種方式 (1)方式一:普通查詢:經過sql語句及db類的query()方法來完成,以下所示: 下面,咱們先經過第一種方式來完成用戶管理系統 //insert、delete、update操做返回布爾true或false //select操做成功時返回結果集對象,失敗時返回布爾值false $query=$this->db->query($sql); //經過結果集對象的方法將結果集轉化爲數據或對象 $data_array=$query->result_array();//將結果集轉換爲二維關聯數組 $row_array=$query->row_array();//將結果集轉換爲一維關聯數組 //獲取查詢到的行數 $num=$query->num_rows(); //db類中insert_id():返回最後一次插入數據的id $id=$this->db->insert_id(); //分頁類庫的載入: $this->load->library("pagination");//載入system/libraries/pagination.php分頁類庫 //分頁配置: $config['base_url']="http://www.myshop.com/index.php/user/userlist/"; $config['total_rows']=200;//總記錄數,可從數據庫獲取 $config['per_page']=10;//每頁顯示的記錄數 $config['...']="...";//其餘配置 //初始化配置,使得分頁配置生效 $this->pagination->initialize($config); //建立默認風格的分頁代碼 $pages=$this->pagination->create_links();//$content['pages'] //limit的值 $limit=($page-1)*$config['per_page']; //注意:傳遞給模板文件的數據都必須放到關聯數組中,會將關聯數組中元素作爲變量 $this->load->view("login.html",$content);//至關於extract($content) //將分頁配置信息放到application/config/pagination.php配置文件中 //載入pagination.php配置文件 $this->config->load("pagination"); //獲取配置選項 $per_page=$this->config->item("per_page");//每頁顯示的記錄數 鏈式操做:可採用鏈式操做 $data_array=$this->db->query($sql)->result_array(); $row_array=$this->db->query($sql)->row_array(); (2)方式二:快捷查詢:主要經過快捷操做類來進行數據庫操做(ActiveRecord) 什麼是快捷操做類:主要用來將sql語句的拼接放到類的方法中來完成。 下面,咱們再使用第二種方式來完成用戶管理系統 //查詢操做 $this->db->get("users",10,20);//參數2:每頁顯示的記錄數 參數3:開始查詢位置 $this->db->get_where("users",array('id'=>1),10,20);//參數3:每頁顯示的記錄數 //案例1:在函數內部幫助咱們自動拼接sql語句 $this->db->select("*");//一、返回一個db類實例化對象 二、將實例化對象做爲模型類的db屬性 $this->db->from("users"); $this->db->where("id",3); $this->db->order_by("id","desc"); $this->db->get(); //案例2: $this->db->select("*"); $this->db->where("id",3); $this->db->order_by("id","desc"); $this->db->get("users"); $this->db->count_all_results();//獲取查詢到的總記錄數 //插入操做: $this->db->insert("users",$data_array);//參數1:表名 參數2:關聯數組 //更新操做: $this->db->update("users",$data_array,$where);//參數1:表名 參數3:關聯數組 //刪除操做: $this->db->delete("users",$where);//參數1:表名 參數2:關聯數組 //關於$where條件分析: 單條件時:使用鍵值對形式的條件 作比較時:使用運算符格式的條件 多條件時:使用關聯數組的格式 鏈式操做: //將結果集轉化爲二維關聯數組 $data_array=$this->db->select('title')->from('mytable')->where('id', $id)->limit($limit, $pagesize)->get()->result_array(); //將結果集轉化爲一維關聯數組 $row_array=$this->db->select('title')->from('mytable')->where('id', $id)->get()->row_array(); ?>