国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > PHP > 正文

ThinkPHP基礎(chǔ)

2020-03-22 18:16:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
  • First
    什么是ThinkPHP?
    ThinkPHP是一個(gè)快速、兼容而且簡(jiǎn)單的輕量級(jí)國(guó)產(chǎn)PHP開(kāi)發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開(kāi)源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過(guò)來(lái)并做了改進(jìn)和完善,同時(shí)也借鑒了國(guó)外很多優(yōu)秀的框架和模式,使用html' target='_blank'>面向?qū)ο?/u>的開(kāi)發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的思想和TagLib(標(biāo)簽庫(kù))、RoR的ORM映射和ActiveRecord模式。

    什么是MVC模式呢?
    MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。

    為什么要使用ThinkPHP,他到底有什么好處呢?

    對(duì)于個(gè)人開(kāi)發(fā)來(lái)說(shuō):

    夠安全:大家在自己寫項(xiàng)目的時(shí)候,幾乎所有的內(nèi)容都需要自己去寫,過(guò)程繁瑣漫長(zhǎng),而且個(gè)人寫出來(lái)的項(xiàng)目之中,必定是漏洞百出。可能自己看不出來(lái),但是如果放在網(wǎng)上,就極易被人發(fā)現(xiàn)漏洞。然后框架作為一套已經(jīng)在市面上成熟運(yùn)用很久的解決方案,其間的安全性是很有保障的。

    效率高:因?yàn)榭蚣芤呀?jīng)把很多工具幫你做好了,到時(shí)需要的時(shí)候只需拿起用就好,大大提高了項(xiàng)目開(kāi)發(fā)的效率,如果自己做架構(gòu),所有的東西都需要你自己來(lái)寫。
    當(dāng)然有人會(huì)說(shuō),我以前寫過(guò),可以直接拿過(guò)來(lái)用,但是自己寫的東西可能通用性并不高,甚至可能最后會(huì)出現(xiàn)很多無(wú)法找到根源的bug,這是特別拖項(xiàng)目進(jìn)度的。

    夠穩(wěn)定:各部件之間有條不紊,在不同程度上都能夠流暢運(yùn)行。相比于自己的架構(gòu),可以在更多情況時(shí)保持穩(wěn)定運(yùn)行。

    對(duì)于公司來(lái)說(shuō):

    團(tuán)隊(duì)協(xié)作能力強(qiáng):提供統(tǒng)一的編碼規(guī)范和模式,團(tuán)隊(duì)協(xié)作很方便。

    低培訓(xùn)成本:使用通用的框架,可以直接關(guān)注業(yè)務(wù)邏輯,不需要培訓(xùn)就可以直接去公司上手工作。

    去技術(shù)人員化:防止某些核心技術(shù)人員離職導(dǎo)致項(xiàng)目開(kāi)發(fā)停滯。

    學(xué)習(xí)ThinkPHP的要求:有上進(jìn)心,可以努力的學(xué)習(xí)原生PHP。越熟悉原生,那么就可以越靈活的使用框架做開(kāi)發(fā)。而且當(dāng)你需要一些TP所不支持的功能時(shí),你完全可以自己寫上。

    Second
    這玩意該怎么玩

    一、獲取Thinkphp
    登陸官方網(wǎng)站:http://www.thinkVeVb.com/ 獲取。
    下載地址

         **這個(gè)網(wǎng)站中也有許多教程和代碼,大家可以自行查看。**

    下完之后,就會(huì)發(fā)現(xiàn)期內(nèi)有這幾個(gè)文件。

    www  WEB部署目錄(或者子目錄)├─index.php       入口文件├─README.md       README文件├─composer.json   Composer定義文件├─Application     應(yīng)用目錄├─Public          資源文件目錄└─ThinkPHP        框架目錄

    入口文件

    在開(kāi)始之前,你需要一個(gè)Web服務(wù)器和PHP運(yùn)行環(huán)境,如果你暫時(shí)還沒(méi)有,我們推薦使用集成開(kāi)發(fā)環(huán)境WAMPServer(是一個(gè)集成了Apache、PHP和MySQL的開(kāi)發(fā)套件,而且支持多個(gè)PHP版本、MySQL版本和Apache版本的切換)來(lái)使用ThinkPHP進(jìn)行本地開(kāi)發(fā)和測(cè)試。

    3.2版本開(kāi)始框架自帶了一個(gè)應(yīng)用入口文件,默認(rèn)內(nèi)容如下:

    define('APP_PATH','./Application/');require './ThinkPHP/ThinkPHP.php';

    打開(kāi)入口文件之后就會(huì)出現(xiàn)一個(gè)界面,這就說(shuō)明Thinkphp安裝成功了。

    入口

    打開(kāi)之后在目錄下會(huì)智能的生成目錄:

    Application├─Common         應(yīng)用公共模塊│  ├─Common      應(yīng)用公共函數(shù)目錄│  └─Conf        應(yīng)用公共配置文件目錄├─Home           默認(rèn)生成的Home模塊│  ├─Conf        模塊配置文件目錄│  ├─Common      模塊函數(shù)公共目錄│  ├─Controller  模塊控制器目錄│  ├─Model       模塊模型目錄│  └─View        模塊視圖文件目錄├─Runtime        運(yùn)行時(shí)目錄│  ├─Cache       模版緩存目錄│  ├─Data        數(shù)據(jù)目錄│  ├─Logs        日志目錄│  └─Temp        緩存目錄模塊設(shè)計(jì)

    配置
    配置

    每個(gè)應(yīng)用模塊都有獨(dú)立的配置文件(位于模塊目錄的Conf/config.php),配置文件的定義格式支持PHP/JSON/YAML/INI/XML等方式,默認(rèn)采用PHP數(shù)組定義,例如:

    // 配置文件return array(    '配置參數(shù)' => '配置值',    // 更多配置參數(shù)    //...);

    如果你需要為各個(gè)模塊定義公共的配置文件,可以在公共模塊中定義(通常位于 Common/Conf/config.php),定義格式是一樣。

    一旦有需要,我們就可以在配置文件中添加相關(guān)配置項(xiàng)目。通常我們提到的添加配置項(xiàng)目,就是指在項(xiàng)目配置文件中添加:

    '配置參數(shù)'=>'配置值',

    配置值可以支持包括字符串、數(shù)字、布爾值和數(shù)組在內(nèi)的數(shù)據(jù),通常我們建議配置參數(shù)均使用大寫定義。

    如果有需要,我們還可以為項(xiàng)目定義其他類型的配置文件,如果要使用其他格式的配置文件,可以在入口文件中定義CONF_EXT常量即可,例如:

    define('CONF_EXT','.ini');

    這樣,模塊的配置文件就變成了 Conf/config.ini,定義格式如下:

    DEFAULT_MODULE = Index ;默認(rèn)模塊URL_MODEL      = 2 ;URL模式

    URL請(qǐng)求

    ThinkPHP采用單一入口模式訪問(wèn)應(yīng)用,對(duì)應(yīng)用的所有請(qǐng)求都定向到應(yīng)用的入口文件,系統(tǒng)會(huì)從URL參數(shù)中解析當(dāng)前請(qǐng)求的模塊、控制器和操作,下面是一個(gè)標(biāo)準(zhǔn)的URL訪問(wèn)格式:

    http://serverName/index.php/模塊/控制器/操作

    如果我們直接訪問(wèn)入口文件的話,由于URL中沒(méi)有模塊、控制器和操作,因此系統(tǒng)會(huì)訪問(wèn)默認(rèn)模塊(Home)下面的默認(rèn)控制器(Index)的默認(rèn)操作(index),因此下面的訪問(wèn)是等效的:

    http://serverName/index.phphttp://serverName/index.php/Home/Index/index

    這種URL模式就是系統(tǒng)默認(rèn)的PATHINFO模式,不同的URL模式獲取模塊和操作的方法不同,ThinkPHP支持的URL模式有四種:普通模式、PATHINFO、REWRITE和兼容模式

    1 普通模式
    普通模式也就是使用傳統(tǒng)的GET傳參方式來(lái)指定當(dāng)前訪問(wèn)的模塊、控制器和操作,例如:

    http://localhost/?m=home&c=index&a=hello&name=thinkphp

    m參數(shù)表示模塊,c表示控制器,a表示操作(當(dāng)然,這些參數(shù)名是可以配置的),后面的表示其他GET參數(shù)。
    默認(rèn)值可以不傳,因此下面的URL訪問(wèn)是和上面的等效:

    http://localhost/?a=hello&name=thinkphp

    2 PATHINFO模式
    PATHINFO模式是系統(tǒng)的默認(rèn)URL模式,提供了最好的SEO支持,系統(tǒng)內(nèi)部已經(jīng)做了環(huán)境的兼容處理,所以能夠支持大多數(shù)的主機(jī)環(huán)境。
    對(duì)應(yīng)上面的URL模式,PATHINFO模式下面的URL訪問(wèn)地址是:

    http://localhost/index.php/home/index/hello/name/thinkphp/

    PATHINFO地址的前三個(gè)參數(shù)分別表示模塊/控制器/操作。

    PATHINFO模式下面,也可以用普通模式的參數(shù)方式傳入?yún)?shù),例如:

    http://localhost/index.php/home/index/hello?name=thinkphp

    PATHINFO模式下面,URL參數(shù)分隔符是可定制的,例如,通過(guò)下面的配置:

    'URL_PATHINFO_DEPR'=>'-',// 更改PATHINFO參數(shù)分隔符

    我們可以支持下面的URL訪問(wèn):

    http://localhost/index.php/home-index-hello-name-thinkphp

    3 REWRITE模式
    REWRITE模式是在PATHINFO模式的基礎(chǔ)上添加了重寫規(guī)則的支持,可以去掉URL地址里面的入口文件index.php,但是需要額外配置WEB服務(wù)器的重寫規(guī)則。
    如果是Apache則需要在入口文件的同級(jí)添加.htaccess文件,內(nèi)容如下:

    <IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule>

    接下來(lái)就可以使用下面的URL地址訪問(wèn)了

    http://localhost/home/index/hello/name/thinkphp/

    4 兼容模式
    兼容模式是用于不支持PATHINFO的特殊環(huán)境,URL地址是:

    http://localhost/?s=/home/index/hello/name/thinkphp

    兼容模式配合Web服務(wù)器重寫規(guī)則的定義,可以達(dá)到和REWRITE模式一樣的URL效果。

    視圖

    ThinkPHP內(nèi)置了一個(gè)編譯型模板引擎,也支持原生的PHP模板,并且還提供了包括Smarty在內(nèi)的模板引擎驅(qū)動(dòng)。和Smarty不同,ThinkPHP在渲染模板的時(shí)候如果不指定模板,則會(huì)采用系統(tǒng)默認(rèn)的定位規(guī)則,其定義規(guī)范默認(rèn)是模塊目錄下面的 View/控制器名/操作名.html,所以,Index模塊的hello操作的默認(rèn)模板文件位于Home模塊目錄下面的View/Index/hello.html,我們添加模板內(nèi)容如下:

    <html><head><title>hello {$name}</title></head><body>    hello, {$name}!</body></html>

    要輸出視圖,必須在控制器方法中進(jìn)行模板渲染輸出操作,例如:

    <?phpnamespace HomeController;use ThinkController;class IndexController extends Controller {    public function hello($name='thinkphp'){        $this->assign('name',$name);        $this->display();    }}

    display方法中我們沒(méi)有指定任何模板,所以按照系統(tǒng)默認(rèn)的規(guī)則輸出了Index/hello.html模板文件。

    接下來(lái),我們?cè)?a href='http://www.survivalescaperooms.com/tag/liulanqi_7527_1.html' target='_blank'>瀏覽器訪問(wèn)輸出:

    hello,thinkphp!

    讀取數(shù)據(jù)

    在開(kāi)始之前,我們首先在數(shù)據(jù)庫(kù)thinkphp中創(chuàng)建一個(gè)think_data數(shù)據(jù)表(以mysql數(shù)據(jù)庫(kù)為例):

    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中添加。

    如果我們需要讀取數(shù)據(jù)庫(kù)中的數(shù)據(jù),就需要在模塊配置文件中添加數(shù)據(jù)庫(kù)連接信息如下:

    // 添加數(shù)據(jù)庫(kù)配置信息'DB_TYPE'=>'mysql',// 數(shù)據(jù)庫(kù)類型'DB_HOST'=>'127.0.0.1',// 服務(wù)器地址'DB_NAME'=>'thinkphp',// 數(shù)據(jù)庫(kù)名'DB_USER'=>'root',// 用戶名'DB_PWD'=>'',// 密碼'DB_PORT'=>3306,// 端口'DB_PREFIX'=>'think_',// 數(shù)據(jù)庫(kù)表前綴'DB_CHARSET'=>'utf8',// 數(shù)據(jù)庫(kù)字符集

    接下來(lái),我們修改下控制器方法,添加讀取數(shù)據(jù)的代碼:

    namespace HomeController;use ThinkController;class IndexController extends Controller{    public function index(){        $Data     = M('Data');// 實(shí)例化Data數(shù)據(jù)模型        $result     = $Data->find(1);        $this->assign('result',$result);        $this->display();    }}

    這里用到了M函數(shù),是ThinkPHP內(nèi)置的實(shí)例化模型的方法,而且用M方法實(shí)例化模型不需要?jiǎng)?chuàng)建對(duì)應(yīng)的模型類,你可以理解為M方法是直接在操作底層的Model類,而Model類具備基本的CURD操作方法。

    M(‘Data’) 實(shí)例化后,就可以對(duì)think_data數(shù)據(jù)表(think_ 是我們?cè)陧?xiàng)目配置文件中定義的數(shù)據(jù)表前綴)進(jìn)行操作(包括CURD)了,M函數(shù)的用法還有很多,我們以后會(huì)深入了解。

    定義好控制器后,我們修改模板文件,添加數(shù)據(jù)輸出標(biāo)簽如下:

    <html><head><title></title></head><body>{$result.id}--{$result.data}</body></html>

    模板標(biāo)簽的用法和Smarty類似,就是用于輸出數(shù)據(jù)的字段,這里就表示輸出think_data表的id和data字段的值。

    我們?cè)L問(wèn)會(huì)輸出:

    1--thinkphp

    如果發(fā)生錯(cuò)誤,檢查你是否開(kāi)啟了調(diào)試模式或者清空Runtime目錄下面的緩存文件。

    綜上,就是ThinkPHP比較基礎(chǔ)的內(nèi)容了。
    最后,有問(wèn)題,又不會(huì)的查手冊(cè),看視頻。
    http://www.kancloud.cn/thinkphp/thinkphp_quickstart/2138

    PHP編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 玉环县| 青冈县| 休宁县| 孝昌县| 册亨县| 甘孜县| 龙口市| 镇雄县| 北安市| 井陉县| 银川市| 太和县| 陆良县| 突泉县| 双鸭山市| 鄂托克前旗| 平利县| 北宁市| 盐亭县| 康马县| 囊谦县| 衡东县| 怀仁县| 上思县| 论坛| 鹤山市| 赞皇县| 香河县| 仙游县| 西贡区| 安塞县| 宝清县| 利津县| 武夷山市| 泸定县| 泽州县| 林芝县| 潞城市| 正蓝旗| 阿拉善左旗| 和田县|