總結下今天學習的知識點php
系統配置文件:ThinkPHP/Conf/convention.phphtml
分組 / 平臺配置文件:Application/Home/Conf/config.phpsql
應用配置文件:Application/Common/Conf/config.php數據庫
【一】ThinkPHP模型M數組
(1)配置數據庫鏈接cookie
數據庫的鏈接配置能夠在系統配置文件ThinkPHP/Conf/convention.php中找到session
實際開發裏,前臺後臺通常使用一個數據庫,也就是說一個項目一個數據庫,因此一個應用使用一個數據庫,因此放到應用層級的配置文件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標籤,禁用的話會跳轉失敗