真實項目開發步驟:php
問題:html
1. 多人開發項目,分工不合理,(html php mysql)mysql
2. 代碼風格不同,後期維護十分困難sql
3. 項目生命週期十分短,項目生命沒有延續性,形成資源浪費、人員浪費thinkphp
4. 項目不能很好適應客戶需求,牽一髮而動全身。數據庫
其餘相關框架設計模式
1. zendframework zend php語言公司發佈的官方框架,重量級(功能多)瀏覽器
2. yii 美國華人開發的框架,xue qiang, qiang, 重量級框架,純OOP框架php框架
3. CI CodeIgniter 輕量級框架,開發速度快,部署靈活架構
4. cakephp 外國框架,重量級,速度慢
5. symfony 外國重量級框架
6. ThinkPHP 輕量級框架,國人框架,入門容易
什麼框架:
一堆代碼的集合,裏邊有變量、函數、類、常量,裏邊也有許多設計模式MVC、AR數據庫、單例等等。
框架能夠節省咱們50-60%的工做量,咱們所有精力都集中在業務層次。
爲何使用框架?
1.框架能夠幫組咱們快速、穩定、高效搭建程序系統
2.該系統因爲框架的使用使得自己的維護性、靈活性、適應客戶需求方面獲得最大化的加強。
3.使用框架的過程當中可使得咱們的注意力所有集中業務層面,而無需關心程序的底層架構。
1. 解壓後thinkphp文件夾中的文件,入口文件換成 index.php
2. conf 配置文件夾
3. library 核心資源庫中
4. library 核心資源庫中核心文件 Think
1. 打開index.php入口文件,將原來的Application改爲JiaoWu
2. 訪問入口文件的同時系統會自動把對應的應用目錄文件Shop建立出來
3. 打開Home文件夾
MVC: Model 模型 模型(數據)層 View 視圖 視圖層 Controller控制器 邏輯層
M:操做數據(數據鏈接,數據訪問)
V:提供顯示模板
C:實現業務邏輯
三者關係如圖所示:
MVC:約定勝於配置
controller文件夾下:
控制器的命名方式:IndexController.class.php -----Index是控制器的名稱
namespace:命名空間,至關於文件目錄
public function index 中index稱爲某個控制器下的操做(action)
action:操做,放在控制器裏面的方法
以前訪問的方式:訪問的具體頁面
MVC訪問的方式:訪問控制器下的操做(方法),不是一個具體頁面
5.1 mvc四種訪問方式:
訪問步驟:
1.找到入口文件index.php
2.再找模塊、控制器、方法名(操做)
1. http://網址/index.php?m=XX&c=XX&a=XX 基本get模式
例子1:
瀏覽器地址:http://localhost:8080/thinkphp/index.php?m=Home&c=index&a=index
結果:
例子2:
瀏覽器地址:http://localhost:8080/thinkphp/index.php?m=Home&c=index&a=Login
結果:
2. http://網址/index.php/模塊/控制器/操做方法 路徑模式pathinfo(推薦使用這種方式)
http://localhost:8080/thinkphp/index.php/Home/index/Login
3. http://網址/模塊/控制器/操做方法 rewrite重寫模式
http://localhost:8080/thinkphp/Home/index/Login
4. http://網址/index.php?s=/模塊/控制器/方法 兼容模式
http://localhost:8080/thinkphp/index.php/?s=Home/index/Login
http://localhost:8080/thinkphp/?s=Home/index/Login
二、三、4 結果:welcome to login
5.2 具體url地址模式設置(配置文件ThinkPHP/Conf/convertion.php)
這裏的控制模式不是來控制訪問的,是來控制生成的
如何修改配置?
不要在原文件中修改,而是複製到本身的項目文件中進行修改
1.在JiaoWu中,找到home文件夾下conf文件夾中的config.php
2.在IndexController.class.php中,建立一個路徑
U(): 製做url地址的快捷函數
運行結果:
注意: 若是是在當前模塊的當前控制器下,能夠只寫方法
若是是在當前模塊的其餘控制器下,要寫上控制器和方法
若是是在其餘模塊下,模塊、控制器、方法名(操做)都要寫
3.修改配置數值:
'URL_MODEL' => 0,
運行結果:/thinkphp/index.php?m=Home&c=index&a=Login
'URL_MODEL' => 2,
運行結果:/thinkphp/Home/index/Login.html
'URL_MODEL' => 3,
運行結果:/thinkphp/index.php?s=/Home/index/Login.html
5.3 控制器中若是要調用視圖層中的模板:
如今在控制器中有一個控制器是IndexController.class.php,裏面有個方法是public function index()
在view文件下有個index.html文件,
IndexController.class.php中:
index.html文件:
運行結果:
緣由:上面二者不是相互對應的,模板文件沒有建立正確,這時候咱們就要去建立模板文件
如何正確建立模版:
若是咱們想要訪問index控制器中的index方法,首先咱們要建立一個index控制器對應的模板文件夾,該文件夾就對應着index控制器:
在index.html裏面寫入要顯示的代碼:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
</head>
<body>
<h1>主頁面</h1>
</body>
</html>
運行結果:
開發調試模式:系統須要加載大概30個文件 index.php define(「APP_DEBUG」,true);
生產模式:系統只須要加載不多的大概12個文件 在入口文件
index.php中定義: define(「APP_DEBUG」,false);
節省了許多文件的開發、關閉的系統開銷,節省資源
開發模式時會出現 commom~runtime.php文件,調試模式則沒有
要在頁面顯示trace信息,須要在本身的配置文件config.php中添加一句代碼: