First
什么是ThinkPHP?
ThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協議發布,從Struts結構移植過來并做了改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用html' target='_blank'>面向對象的開發結構和MVC模式,融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式。
什么是MVC模式呢?
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
為什么要使用ThinkPHP,他到底有什么好處呢?
對于個人開發來說:
夠安全:大家在自己寫項目的時候,幾乎所有的內容都需要自己去寫,過程繁瑣漫長,而且個人寫出來的項目之中,必定是漏洞百出??赡茏约嚎床怀鰜恚侨绻旁诰W上,就極易被人發現漏洞。然后框架作為一套已經在市面上成熟運用很久的解決方案,其間的安全性是很有保障的。
效率高:因為框架已經把很多工具幫你做好了,到時需要的時候只需拿起用就好,大大提高了項目開發的效率,如果自己做架構,所有的東西都需要你自己來寫。
當然有人會說,我以前寫過,可以直接拿過來用,但是自己寫的東西可能通用性并不高,甚至可能最后會出現很多無法找到根源的bug,這是特別拖項目進度的。
夠穩定:各部件之間有條不紊,在不同程度上都能夠流暢運行。相比于自己的架構,可以在更多情況時保持穩定運行。
對于公司來說:
團隊協作能力強:提供統一的編碼規范和模式,團隊協作很方便。
低培訓成本:使用通用的框架,可以直接關注業務邏輯,不需要培訓就可以直接去公司上手工作。
去技術人員化:防止某些核心技術人員離職導致項目開發停滯。
學習ThinkPHP的要求:有上進心,可以努力的學習原生PHP。越熟悉原生,那么就可以越靈活的使用框架做開發。而且當你需要一些TP所不支持的功能時,你完全可以自己寫上。
Second
這玩意該怎么玩
一、獲取Thinkphp
登陸官方網站:http://www.thinkVeVb.com/ 獲取。
**這個網站中也有許多教程和代碼,大家可以自行查看。**
下完之后,就會發現期內有這幾個文件。
www WEB部署目錄(或者子目錄)├─index.php 入口文件├─README.md README文件├─composer.json Composer定義文件├─Application 應用目錄├─Public 資源文件目錄└─ThinkPHP 框架目錄
入口文件
在開始之前,你需要一個Web服務器和PHP運行環境,如果你暫時還沒有,我們推薦使用集成開發環境WAMPServer(是一個集成了Apache、PHP和MySQL的開發套件,而且支持多個PHP版本、MySQL版本和Apache版本的切換)來使用ThinkPHP進行本地開發和測試。
3.2版本開始框架自帶了一個應用入口文件,默認內容如下:
define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';
打開入口文件之后就會出現一個界面,這就說明Thinkphp安裝成功了。
打開之后在目錄下會智能的生成目錄:
Application├─Common 應用公共模塊│ ├─Common 應用公共函數目錄│ └─Conf 應用公共配置文件目錄├─Home 默認生成的Home模塊│ ├─Conf 模塊配置文件目錄│ ├─Common 模塊函數公共目錄│ ├─Controller 模塊控制器目錄│ ├─Model 模塊模型目錄│ └─View 模塊視圖文件目錄├─Runtime 運行時目錄│ ├─Cache 模版緩存目錄│ ├─Data 數據目錄│ ├─Logs 日志目錄│ └─Temp 緩存目錄模塊設計
配置
配置
每個應用模塊都有獨立的配置文件(位于模塊目錄的Conf/config.php),配置文件的定義格式支持PHP/JSON/YAML/INI/XML等方式,默認采用PHP數組定義,例如:
// 配置文件return array( '配置參數' => '配置值', // 更多配置參數 //...);
如果你需要為各個模塊定義公共的配置文件,可以在公共模塊中定義(通常位于 Common/Conf/config.php),定義格式是一樣。
一旦有需要,我們就可以在配置文件中添加相關配置項目。通常我們提到的添加配置項目,就是指在項目配置文件中添加:
'配置參數'=>'配置值',
配置值可以支持包括字符串、數字、布爾值和數組在內的數據,通常我們建議配置參數均使用大寫定義。
如果有需要,我們還可以為項目定義其他類型的配置文件,如果要使用其他格式的配置文件,可以在入口文件中定義CONF_EXT常量即可,例如:
define('CONF_EXT','.ini');
這樣,模塊的配置文件就變成了 Conf/config.ini,定義格式如下:
DEFAULT_MODULE = Index ;默認模塊URL_MODEL = 2 ;URL模式
URL請求
ThinkPHP采用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口文件,系統會從URL參數中解析當前請求的模塊、控制器和操作,下面是一個標準的URL訪問格式:
http://serverName/index.php/模塊/控制器/操作
如果我們直接訪問入口文件的話,由于URL中沒有模塊、控制器和操作,因此系統會訪問默認模塊(Home)下面的默認控制器(Index)的默認操作(index),因此下面的訪問是等效的:
http://serverName/index.phphttp://serverName/index.php/Home/Index/index
這種URL模式就是系統默認的PATHINFO模式,不同的URL模式獲取模塊和操作的方法不同,ThinkPHP支持的URL模式有四種:普通模式、PATHINFO、REWRITE和兼容模式。
1 普通模式
普通模式也就是使用傳統的GET傳參方式來指定當前訪問的模塊、控制器和操作,例如:
http://localhost/?m=home&c=index&a=hello&name=thinkphp
m參數表示模塊,c表示控制器,a表示操作(當然,這些參數名是可以配置的),后面的表示其他GET參數。
默認值可以不傳,因此下面的URL訪問是和上面的等效:
http://localhost/?a=hello&name=thinkphp
2 PATHINFO模式
PATHINFO模式是系統的默認URL模式,提供了最好的SEO支持,系統內部已經做了環境的兼容處理,所以能夠支持大多數的主機環境。
對應上面的URL模式,PATHINFO模式下面的URL訪問地址是:
http://localhost/index.php/home/index/hello/name/thinkphp/
PATHINFO地址的前三個參數分別表示模塊/控制器/操作。
PATHINFO模式下面,也可以用普通模式的參數方式傳入參數,例如:
http://localhost/index.php/home/index/hello?name=thinkphp
PATHINFO模式下面,URL參數分隔符是可定制的,例如,通過下面的配置:
'URL_PATHINFO_DEPR'=>'-',// 更改PATHINFO參數分隔符
我們可以支持下面的URL訪問:
http://localhost/index.php/home-index-hello-name-thinkphp
3 REWRITE模式
REWRITE模式是在PATHINFO模式的基礎上添加了重寫規則的支持,可以去掉URL地址里面的入口文件index.php,但是需要額外配置WEB服務器的重寫規則。
如果是Apache則需要在入口文件的同級添加.htaccess文件,內容如下:
<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>
接下來就可以使用下面的URL地址訪問了
http://localhost/home/index/hello/name/thinkphp/
4 兼容模式
兼容模式是用于不支持PATHINFO的特殊環境,URL地址是:
http://localhost/?s=/home/index/hello/name/thinkphp
兼容模式配合Web服務器重寫規則的定義,可以達到和REWRITE模式一樣的URL效果。
視圖
ThinkPHP內置了一個編譯型模板引擎,也支持原生的PHP模板,并且還提供了包括Smarty在內的模板引擎驅動。和Smarty不同,ThinkPHP在渲染模板的時候如果不指定模板,則會采用系統默認的定位規則,其定義規范默認是模塊目錄下面的 View/控制器名/操作名.html,所以,Index模塊的hello操作的默認模板文件位于Home模塊目錄下面的View/Index/hello.html,我們添加模板內容如下:
<html><head><title>hello {$name}</title></head><body> hello, {$name}!</body></html>
要輸出視圖,必須在控制器方法中進行模板渲染輸出操作,例如:
<?phpnamespace HomeController;use ThinkController;class IndexController extends Controller { public function hello($name='thinkphp'){ $this->assign('name',$name); $this->display(); }}
display方法中我們沒有指定任何模板,所以按照系統默認的規則輸出了Index/hello.html模板文件。
接下來,我們在瀏覽器訪問輸出:
hello,thinkphp!
讀取數據
在開始之前,我們首先在數據庫thinkphp中創建一個think_data數據表(以mysql數據庫為例):
CREATE TABLE IF NOT EXISTS `think_data`(`id`int(8)unsigned NOT NULL AUTO_INCREMENT,`data` varchar(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;INSERT INTO `think_data`(`id`,`data`) VALUES(1,'thinkphp'),(2,'php'),(3,'framework');
也可以直接在phpmyadmin中添加。
如果我們需要讀取數據庫中的數據,就需要在模塊配置文件中添加數據庫連接信息如下:
// 添加數據庫配置信息'DB_TYPE'=>'mysql',// 數據庫類型'DB_HOST'=>'127.0.0.1',// 服務器地址'DB_NAME'=>'thinkphp',// 數據庫名'DB_USER'=>'root',// 用戶名'DB_PWD'=>'',// 密碼'DB_PORT'=>3306,// 端口'DB_PREFIX'=>'think_',// 數據庫表前綴'DB_CHARSET'=>'utf8',// 數據庫字符集
接下來,我們修改下控制器方法,添加讀取數據的代碼:
namespace HomeController;use ThinkController;class IndexController extends Controller{ public function index(){ $Data = M('Data');// 實例化Data數據模型 $result = $Data->find(1); $this->assign('result',$result); $this->display(); }}
這里用到了M函數,是ThinkPHP內置的實例化模型的方法,而且用M方法實例化模型不需要創建對應的模型類,你可以理解為M方法是直接在操作底層的Model類,而Model類具備基本的CURD操作方法。
M(‘Data’) 實例化后,就可以對think_data數據表(think_ 是我們在項目配置文件中定義的數據表前綴)進行操作(包括CURD)了,M函數的用法還有很多,我們以后會深入了解。
定義好控制器后,我們修改模板文件,添加數據輸出標簽如下:
<html><head><title></title></head><body>{$result.id}--{$result.data}</body></html>
模板標簽的用法和Smarty類似,就是用于輸出數據的字段,這里就表示輸出think_data表的id和data字段的值。
我們訪問會輸出:
1--thinkphp
如果發生錯誤,檢查你是否開啟了調試模式或者清空Runtime目錄下面的緩存文件。
綜上,就是ThinkPHP比較基礎的內容了。
最后,有問題,又不會的查手冊,看視頻。
http://www.kancloud.cn/thinkphp/thinkphp_quickstart/2138
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答