1. 程式人生 > >總結回顧---1

總結回顧---1

convert 位置 標簽 字符集 一個 存儲 file 實例 布局

總結下今天學習的知識點

系統配置文件: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