ThinkPHP架構基礎

來源:互聯網
上載者:User

標籤:

ThinkPHP一.php架構基礎介紹

真實項目開發步驟:

  1. 多人同時開發項目,協作開發項目、分工合理、效率有提高(代碼風格不一樣、分工不好)
  2. 測試階段
  3. 上線運行
  4. 對項目進行維護、修改、升級(單個人維護項目,十分困難,代碼風格不一樣)
  5. 項目穩定的運行階段
  6. 項目停止運行(舊項目的人員已經全部離職,新人開發新項目)

 

問題:

1. 多人開發項目,分工不合理,(html   php   mysql)

2. 代碼風格不一樣,後期維護十分困難

3. 專案生命週期十分短,項目生命沒有延續性,造成資源浪費、人員浪費

4. 項目不能很好適應客戶需求,牽一髮而動全身。

 

其他相關架構

1. zendframework   zend php語言公司發布的官方架構,重量級(功能多)

2. yii   美國華人開發的架構,xue qiang, qiang,  重量級架構,純OOP架構

3. CI  CodeIgniter輕量級架構,開發速度快,部署靈活

  1. cakephp外國架構,重量級,速度慢
  2. symfony外國重量級架構
  3. ThinkPHP輕量級架構,國人架構,入門容易

 

什麼架構:

       一堆代碼的集合,裡邊有變數、函數、類、常量,裡邊也有許多設計模式MVC、AR資料庫、單例等等。

       架構可以節省我們50-60%的工作量,我們全部精力都集中在業務層次。

 

為什麼使用架構

l   架構可以幫組我們快速、穩定、高效搭建程式系統

l  該系統由於架構的使用使得本身的維護性、靈活性、適應客戶需求方面得到最大化的增強。

l  使用架構的過程中可以使得我們的注意力全部集中業務層面,而無需關心程式的底層架構。

ThinkPHP版本介紹

thinkphp.cn

thinkphp 3.2版本

1. 解壓後thinkphp檔案夾中的檔案,入口檔案換成 index.php

index.php-----是解壓出來的第一個php檔案,是一個項目的入口檔案,也就是項目所有的頁面都要走此頁面

2. conf 設定檔夾

  3. library 核心資產庫中

 

4. library 核心資產庫中核心檔案 Think

ThinkPHP-----核心檔案夾(裡面的東西不要修改)

ThinkPHP包含著:
**Common----核心函數庫(存放使用者自訂的函數)
**Conf-----設定檔(主要存放在convention.php)
Home----
Lang----語言套件
**Library-----核心資產庫 (存放的是一些核心類:Library/Think下全部是類)
Mode----模型檔案夾
Tpl-----模板

Application-----存放項目的檔案夾,可以改的

public----存放一些公有的東西

 

架構項目部署

 1. 開啟index.php入口檔案,將原來的Application改成JiaoWu(如下所示)

<?php// 應用入口檔案// 檢測PHP環境if(version_compare(PHP_VERSION,‘5.3.0‘,‘<‘))  die(‘require PHP > 5.3.0 !‘);// 開啟偵錯模式 建議開發階段開啟 部署階段注釋或者設為falsedefine(‘APP_DEBUG‘,True);// 定義應用目錄define(‘APP_PATH‘,‘./JiaoWu/‘);//自己的檔案名稱(在這裡可以隨便命名)// 引入ThinkPHP入口檔案require ‘./ThinkPHP/ThinkPHP.php‘;// 親^_^ 後面不需要任何代碼了 就是如此簡單

2. 訪問入口檔案的同時系統會自動把對應的應用目錄檔案JiaoWu建立出來

3. 開啟Home檔案夾

MVC模式

MVC模式:
Model 模型 模型(資料)層 
View 視圖 視圖層 
Controller控制器 邏輯層

M: 操作資料(資料連線,資料訪問)
V:提供顯示模板
C:實現商務邏輯

MVC:約定勝於配置(約定非常的重要)

 

控制器訪問及路由解析

通過url地址get參數找到指定的控制器,並進行對應方法調用請求

http://網址/index.php?m=模組名稱&c=控制器&a=方法

以上url地址資訊代碼不夠優雅、不安全。

action:操作,放在控制器裡面的方法

之前的訪問方式:訪問具體的頁面

訪問的方式:存取控制器下的操作(某個方法),不是一個具體的頁面

1.MVC的4種存取方法

1.找到入口檔案index.php

2.再找到模組名,控制器,方法名(操作)

以下是Home模組中的LoginController.class.php利用4種方法對其訪問

 

<?phpnamespace Home\Controller;use Think\Controller;class LoginController extends Controller{    public function index()    {        echo "login---登入";    }    }

 

1.  http://網址/index.php?m=XX&c=XX&a=XX   基本get模式寫法:localhost:8080/tp/index.php/?m=Home&c=Login&a=index

2.http://網址/index.php/模組/控制器/操作方法路徑模式pathinfo(推薦使用)寫法:locahost:8080/tp/index.php/Home/Login/index

 

 3.http://網址/模組/控制器/操作方法           rewrite重寫入模式寫法:http://localhost:8080/tp/Home/Login/index(自己沒有實現)4.http://網址/index.php?s=/模組/控制器/方法相容模式寫法:http://localhost:8080/tp/index.php/?s=Home/Login/index(4的寫法)   http://localhost:8080/tp/?s=Home/Login/index(雖然也可以不知道為啥)1.具體url地址模式設定(設定檔ThinkPHP/Conf/convertion.php)

URL_MODEL  =  0/1/2/3  分別代表四種url地址模式

Shop改為JiaoWu

 

 

config.php是我們當前自己項目的設定檔,我們可以通過修改該檔案達到組態變數的目錄

這個檔案在系統運行過程中會覆蓋convertion.php的組態變數

include “convertion.php”;

include “config.php”;  後引入的檔案要把先引入的檔案組態變數給覆蓋掉

換句話說:也就是修改配置是在JiaoWu/Home/config.php中而不是在核心資產庫convertion.php

我們系統有相容4中url地址模式的使用

系統有的時候會自動建立url地址,它會根據當前模式進行url地址建立使用

快捷函數U();  建立url地址

修改配置:

特別注意:這裡的控制模式不是來控制訪問的,是來控制產生的

 

 

<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller {    public function Login()    {        //echo "你好";            //echo U("Home/Index/Login");        //echo U("Index/Login");        echo U("Login");//輸出同樣        //利用U()快捷方法建立路徑的三種方式    }}

注意: 如果是在當前模組的當前控制器下,可以唯寫方法
      如果是在當前模組的其他控制器下,要寫上控制器和方法
      如果是在其他模組下,模組、控制器、方法名(操作)都要寫

修改配置參數:

‘URL_MODEL‘             =>  1,   (最常用)

輸出結果:/tp/index.php/home/index/login.html

‘URL_MODEL‘             =>  0, 

輸出結果:/tp/index.php?m=home&c=index&a=login

‘URL_MODEL‘             =>  2, 

輸出結果:/tp/home/index/login.html

‘URL_MODEL‘             =>  3,

 輸出結果:/tp/index.php?s=/home/index/login.html

 

開發、生產模式

 

開發偵錯模式:系統需要載入大概24個檔案  index.php  define(“APP_DEBUG”,true);

 

生產模式:系統只需要載入很少的大概7個檔案在入口檔案

 

index.php中定義: define(“APP_DEBUG”,false);

 

節省了許多檔案的開發、關閉的系統開銷,節省資源

要在頁面顯示trace資訊,需要在自己的設定檔中:

define(‘APP_DEBUG‘,True);   為true時:

define(‘APP_DEBUG‘,False);    為false時:

 

而且還會出現

 

控制器和對應方法建立

控制器是MVC模式中的核心,tp預設有一個Index控制器:

如果要自己建立一個控制器Login:

  1. 在\JiaoWu\Home\Controller檔案夾下建立一個控制器檔案LoginController.class.php

注意:檔案命名規則,按照駝峰法命名

在IndexController.class.php中

<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller {    public function index(){        $this->display();    }    }

在view下一級index.html中

 

<html><meta charset="utf-8" /><head></head><body><h1>首頁面</h1></body></html>

此時出現的頁面時:

原因:上面兩者不是相互對應的,模板檔案沒有建立正確,這時候我們就要去建立模板檔案

如何正確建立模版:

如果我們想要訪問index控制器中的index方法,首先我們要建立一個index控制器對應的模板檔案夾,該檔案夾就對應著index控制器:

換句話說也就是在View目錄下建立目錄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>這是一個首頁面(與IndexController.class.php對應)</h1></body></html>

顯示效果為:

 

ThinkPHP架構基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.