總結回顧---1
總結下今天學習的知識點
系統配置文件:ThinkPHP/Conf/convention.php
分組 / 平臺配置文件:Application/Home/Conf/config.php
應用配置文件:Application/Common/Conf/config.php
【一】ThinkPHP模型M
(1)配置數據庫連接
數據庫的連接配置可以在系統配置文件ThinkPHP/Conf/convention.php中找到
實際開發裏,前臺後臺一般使用一個數據庫,也就是說一個項目一個數據庫,所以一個應用使用一個數據庫,所以放到應用層級的配置文件Application\Common\Conf\config.php
(2)創建數據庫和數據表
數據庫名:db_oa
數據表名: sp_dept(department部門);
準備好sql語句.
知識點:not null不為空;auto_increment自增;default默認;
這裏除了通過命令行cmd創建,還可以使用Navicat Premium。它是一個可多重連接的數據庫管理工具,它可讓你以單一程序同時連接到MySQL、SQL Server、SQLite、Oracle
(3)模型創建
(4)模型實例化(創建控制器,連接數據表)
模型的本質是類,類在使用時需要實例化操作。1. 普通實例化;2. 快速實例化方法U、M
(5)CURD操作
模型操作數據表的基本操作
【二】實用項
代碼調試
(1)跟蹤信息;
(2)兩種模式,在ThinkPHP中為了方便開發,提供了兩種模式:開發/模式模式,生產模式;
(3)sql調試;語法:$model -> getLastSql()--小駝峰命名法,表示獲取當前模型裏成功執行的最後一條sql語句。
別名:因為getLastSql書寫不便,所以在3.2版本之後起了個別名_sql,用法與之前一致。語法:$model->_sql();
(4)性能調試,在ThinkPHP中系統提供了性能測試的快速方法G。
目前所學過的快速方法:U(URL組裝),D(實例化自定義模型),M(實例化父類模型),G(性能測試)
【三】AR模式
(1)簡介:AR模式即Active Record模式,是一個對象關系映射(ORM) 技術。每個AR 類代表一張數據表(或視圖), 數據表(或視圖)的字段在AR 類中體現為類的屬性,一個AR實例
則表示表中的。
AR模式核心:三個映射 / 對應
AR類 == 表;(模型類關聯了數據表)
AR類屬性 == 表的字段;
AR類實例 == 表的記錄;
(2)應用(AR模式中的CURD操作)
增加:$model ->add();//返回新增記錄的主鍵id
更新:$model ->save();//返回值為影響行數
查詢:AR模式沒有查詢操作
刪除:$model -> delete();
【四】ThinkPHP視圖V
(1)什麽是視圖?
MVC中的V(view),主要負責信息的輸出展示
(2)視圖的創建?
創建位置:分組目錄Home下的View目錄下指定的控制器名目錄中,然後將模板綁定到控制器的方法中,一個公共控制器中可以綁定多個模板
註意:位置問題,控制器同名
①位置是view下與控制器同名的目錄中;view下一級目錄為控制器,二級目錄為方法(對應的模板文件)
②如果有多個模板文件,則按照上面要求進行創建
(3)視圖的展示?
在smarty中展示模板用的display方法,在ThinkPHP裏同樣是display方法
display在ThinkPHP中的3種語法格式:
①$this->display(); 展示當前控制器下與當前請求方法名一致的模板文件
②$this->display(模板文件名--不帶後綴); 展示當前控制器下指定模板文件
③$this->display(view目錄下目錄名/模板文件名--不帶後綴); 展示指定控制器下的指定模板文件
(4)變量分配:將變量從控制器的方法裏傳遞到模板中展示的過程即為變量分配
(5)變量分隔符:ThinkPHP默認變量分隔符為{},可以在配置文件ThinkPHP/Conf/convertion.php裏找到配置項
(6)模板常量替換機制
模板常量來源?
這裏模板常量是通過模板內容替換機制來實現的,並非是常量的定義。所以模板常量並非是常量,而是字符串。
替換機制可以查看行為文件ThinkPHP/Library/Behavior/ContentReplace.Behaviour.class.php
拓展:查看後即可得出行為文件命名,文件名.Behaviour.class.php。
(5)獲取模板內容
在ThinkPHP裏有一個方法與display展示模板方法類似,叫做fetch()方法
$this->display();用來展示模板內容,而$this->fetch常用來獲取模板內容,
該語法封裝在系統的函數庫ThinkPHP/Common/functions.php裏
(7)視圖註釋
回顧下HTML的註釋<!--註釋內容-->,普通的註釋在頁面源碼中會被輸出
(8)變量分配
變量輸出:簡單變量,一維數組,二維數組,對象變量
變量的分配語法相同:都是assign(‘模板中的變量‘,PHP中的變量);
對象變量輸出
對象在實例化之後,會保存到變量中,而這個變量也可以分配到模板裏去
首先創建類,然後實例化類來創建對象
註意:
1. 對於多個人開發項目,函數名很容易重復。用了類之後,類之間的方法名被類分開,重名也沒關系。
但是當項目更大時,類名也有可能重復。此時就要用到命名空間,來避免重名。所以創建類之前必須定義命名空間
2. 創建類文件時,必須加上文件名.class.php
Student.class.php,
TestController.class.php,該文件裏不用引入,直接實例化類,輸出
object(Admin\Controller\Student)#6 (0) { }
類的實例化:
1. 之所以不用引入類就能實例化,主要因為命名空間
命名空間運行流程:當需要引入或使用元素時,默認先去當前空間下去找。而Student.class.php在當前空間下Admin\Controller,所以會找到執行。若找不到則會報錯
2. 如果不寫命名空間、include、require則會默認從當前空間下去查找需要的元素,若找不到則報錯
拓展:設置編碼字符集:
index.php入口文件: //給入口文件添加header頭聲明字符集 header(‘Content-Type:text/html;charset=utf-8‘)
(9)系統變量
ThinkPHP裏提供了以下幾個系統級別的變量(可以理解為超全局變量在模板中的使用)
$Think.server;$Think.get;$Think.post;$Think.request;$Think.cookie;$Think.session;$Think.config;
(11)視圖中使用函數
在實際開發中,有些變量不能直接使用。舉個例子,數據表中存儲時間一般都為時間戳格式,展示的時候需要處理格式化,操作相對繁瑣。這個時候便涉及到了視圖中使用函數
語法格式:{$變量|函數名1|函數名2=參數1,參數2...,###}
(12)默認值
使用場景:在論壇的個性簽名處,如果用戶什麽都沒寫,一般默認會顯示-----------→這個家夥很懶,什麽都沒留下
默認值:當某個變量不存在或為空時,便會顯示默認字符或默認值
語法:{$變量名|default = 默認值},結合上面視圖中函數的使用。這裏可以理解為{$變量名|函數名=參數},而default為ThinkPHP封裝的函數
(13)運算符
加減乘除取余,自增自減
{$a+$b},{$a-$b},{$a*$b},{$a/$b},{$a%$b},{$a++}或{++$a},{$a--}或{--$a}
(14)文件引入
提出公共部分,後期維護方便。語法:<include file=‘需要引入的模板文件‘/>
(15)視圖中數組循環遍歷volist、foreach
在ThinkPHP裏,系統提供了兩個標簽volist和foreach來實現數組在模板中的遍歷操作
(16)if標簽
PHP中if判斷作用是流程控制,在ThinkPHP裏同樣也可以用於流程控制
語法:(註意<if></if>標簽閉合)
(17)PHP標簽
PHP標簽指在模板中使用PHP語法格式
ThinkPHP支持兩種形式標簽①PHP內置的標簽<?php 代碼段 ?>;②ThinkPHP封裝的PHP標簽<php>代碼段</php>
在配置項裏,有一個配置項(TMPL_DENY_PHP即tmplate deny php拒絕php模板),可以禁用PHP標簽。該配置項在系統配置文件ThinkPHP/Conf/convention.php裏
// 布局設置 ‘TMPL_DENY_PHP‘ => false, // 默認模板引擎是否禁用PHP原生代碼
開啟後便會禁用原生PHP代碼(不建議禁用),此時在模板文件裏<?php ?>原生PHP標簽失效。下面來驗證下,發現報錯
:( 模板禁用PHP代碼
不建議禁用。若禁用了原生PHP標簽,某些功能會異常。比如成功跳轉和失敗跳轉,因為成功跳轉和失敗跳轉使用了原生PHP標簽,禁用的話會跳轉失敗
總結回顧---1