thinkphp使用方法是什么

thinkphp使用方法是什么

一、項目部署

1、虛擬主機部署/本地部署

去掉public/index.php改到 根目錄下/index.php。在網站根目錄下建立文件index.php,內容如下

<?php // 定義應用目錄 define(&#39;APP_PATH&#39;, __DIR__ . &#39;/apps/&#39;); // 加載框架引導文件 require  &#39;./thinkphp/start.php&#39;;

這樣基本上就可以了,這是最簡單的配置。

立即學習PHP免費學習筆記(深入)”;

2、服務器部署

服務器部署項目文件入口public ,優勢:只給外人看到public目錄下的文件,與public同級的文件,在外網是隱藏狀態的,如:thinkphp、apps、extend、tests、vendor。更簡單的意思就是通過域名是訪問不到這些文件下內容的,但又不影響框架的使用。

二、創建模塊(自動生成模塊)

我的項目是部署在本地www/thinkphp 目錄下。在做之前,先要考慮清楚,你需要幾個模塊來完成你的項目。

開始實例

1、創建三個模塊 Common(公共模塊),Home(前臺模塊),Admin(后臺模塊)。公共模塊是必不可少的。

修改的情況下為public下的index.php,打開是這樣子的

//?定義應用目錄 define('APP_PATH',?__DIR__?.?'/../application/'); //?加載框架引導文件 require?__DIR__?.?'/../thinkphp/start.php';

在后面加上這兩句

$build?=?include?'../build.php'; //?運行自動生成 thinkBuild::run($build);

build.php配置 (自動生成目錄) 手冊參考:http://www.kancloud.cn/manual/thinkphp5/118021

在項目的根目錄有一個build.php文件,打開后看到是這樣的:

<?php return [     // 生成應用公共文件     &#39;__file__&#39; =>?['common.php',?'config.php',?'database.php'], ? ????//?定義demo模塊的自動生成?(按照實際定義的文件名生成) ????'demo'?????=&gt;?[ ????????'__file__'???=&gt;?['common.php'], ????????'__dir__'????=&gt;?['behavior',?'controller',?'model',?'view'], ????????'controller'?=&gt;?['Index',?'Test',?'UserType'], ????????'model'??????=&gt;?['User',?'UserType'], ????????'view'???????=&gt;?['index/index'], ????], ????//?其他更多的模塊定義 ];

然后我們給我們需要的文件名在這個地方加上,給的demo可以直接注釋掉,如下:

<?php return [     // 生成應用公共文件     &#39;__file__&#39; =>?['common.php',?'config.php',?'database.php'], ????//公共模塊目錄 ????'common'?=&gt;?[ ????????'__file__'???=&gt;?['common.php'], ????????'__dir__'????=&gt;?['controller',?'model','lang'], ????????'controller'?=&gt;?['Index'], ????????'model'??????=&gt;?['Base'], ????], ????//?Index模塊 ????'home'?????=&gt;?[ ????????'__file__'???=&gt;?['common.php'], ????????'__dir__'????=&gt;?['behavior',?'controller',?'model',?'view','lang'], ????????'controller'?=&gt;?['Index'], ????????'model'??????=&gt;?['Test'], ????????'view'???????=&gt;?['index/index'], ????], ????//?Admin?模塊 ????'admin'?????=&gt;?[ ????????'__file__'???=&gt;?['common.php'], ????????'__dir__'????=&gt;?['behavior',?'controller',?'model',?'view','lang'], ????????'controller'?=&gt;?['Index'], ????????'model'??????=&gt;?['Test'], ????????'view'???????=&gt;?['index/index'], ????],? ];

1)其中的SITE_PATH,與 RUNTIME_PATH后面都有用到,所有優先放在index.php里面方便后面調用。

2)這兩個東西,要放一起使用

$build?=?include?'./build.php'; //?運行自動生成 thinkBuild::run($build);

相關推薦:《ThinkPHP教程

三、創建基類

開干之前,得先設置好“基類”,為什么呢?打個比方,要訪問會員中心相關的控制器,這類控制器是不是都要有一個“登錄限制”,才讓訪問會員相關的控制器? 基類的作用就出來了。

1、創建三大基類

原始基類

位置:thinkphpappscommoncontrollerbase.php

作用:base模塊下的內容,Index模塊,和Admin模塊都可以調用。

代碼:

<?php /**  * 原始基類  * */ namespace appCommoncontroller; use  thinkController; class Base extends Controller{     public function _initialize()     {         parent::_initialize();         echo &#39;原始基類&#39;;     }     public function test1(){         return &#39;test1&#39;;     } }

Index模塊基類

位置:thinkphpappscommoncontrollerbase.php

作用:Index模塊下的控制器,都要“繼承基類”并且“調用基類”。

代碼:

<?php /**  * 前端基類  * */ namespace appindexcontroller; use  appCommoncontrollerBase; class IndexBase extends  Base {     public function _initialize()     {         parent::_initialize();     }     public function index()     {             } }

Admin模塊基類

位置:thinkphpappscommoncontrollerbase.php

作用:Admin模塊下的控制器,都要“繼承基類”并且“調用基類”。

代碼:

/** ?*?后臺首頁 ?*?*/ namespace?appAdmincontroller; use?appAdmincontrollerAdminBase; class?Index?extends?AdminBase { ????public?function?_initialize() ????{ ????????parent::_initialize(); ????} ????public?function?index() ????{ ????????return?$this-&gt;fetch(); ????} }

(User模塊基類,如果有會員的話,這個也必須要創建的)

創建基類的主要目的,就是“繼承”與“調用”。

四、設置模板路徑

默認的模板路徑在模塊/view文件里面。如果你覺得這樣不太方便管理,想要把他設置Template目錄下,可以這樣做。

模板參數 ,能夠影響的它參數,是當前模塊下config.php template->view_path參數。

實際操作

1、配置共享參數

在apps/config.php設置一些參數,方便在Index或Admin模塊下config.php調用。

apps/config.php,增加一些參數。

'template'???????????????=&gt;?[//?模板路徑 ????????'view_path'????=&gt;?'template/',?????//?就是這里 /** ?????*?前臺文件配置 ?????*?Author:?MR.zhou ?????*?*/ ????'index'?=&gt;?[ ????????//?模快名稱 ????????'model_name'?=&gt;'index', ????????//?默認模板文件名稱 ????????'default_template'?=&gt;?'default',???????//?這里可以切換模塊下的默認模板名稱 ????], ????/** ?????*?后臺文件配置 ?????*?Author:?MR.zhou ?????*?*/ ????'admin'=&gt;[ ????????//?模快名稱 ????????'model_name'?=&gt;'admin', ????????//?默認模板文件名稱 ????????'default_template'?=&gt;'default',????????//?這里可以切換模塊下的默認模板名稱 ],

2、設置模板參數

index/config.php

'template'=&gt;?[ ????//?模板路徑 ????'view_path'=&gt;?config('template.view_path').config('index.model_name').'/'.config('index.default_template').'/', ],

admin/config.php

<?php //配置文件 return [     // 模板配置     &#39;template&#39;               =>?[ ????????//?模板路徑 ????????'view_path'????=&gt;?config('template.view_path').config('admin.model_name').'/'.config('index. ????????default_template').'/', ????], ];

擴展:

1.模板后綴view_suffix,它的影響

http://localhost/thinkphp/index/news/index/id/1212

http://localhost/thinkphp/index/news/index/id/1212.html

五、配置data文件夾

如果你看項目下的各種文件,有種亂七八糟的感覺的話,你就可以進行以下配置。

配置data文件夾的,整理各種文件,讓看起來舒服些。

1、設置runtime文件夾

index.php

define('RUNTIME_PATH',?__DIR__?.?'/data/runtime/');

2、設置upload,存放上傳圖片、上傳文件

3、設置static,存放jquery.js、bootstrap、一些效果插件什么的

//?視圖輸出字符串內容替換 'view_replace_str'???????=&gt;?[ ????'__DATA__'?=&gt;?SITE_PATH.'data/', ????//?上傳文件路徑 ????'__UPLOAD__'?=&gt;SITE_PATH.'data/upload/', ????//??靜態文件路徑?(如bootshop,js,css) ????'__STATIC__'?=&gt;SITE_PATH.'data/upload/',???? ],

4、定義模板文件路徑,方便調用模板下的css、js、images

'view_replace_str'???????=&gt;?[ ????//?模板文件路徑 ????'__TEMPLATE__'?=&gt;?config('template.view_path').config('index.model_name').'/'.config('index.default_template') ????.'/', ????//?模板下的共享文件路徑(css,js,images...) ????'__PUBLIC__'?=&gt;?SITE_PATH.'/'.config('template.view_path').config('index.model_name').'/'.config('index. ????default_template').'/public/', ],

模板頁引用:

<script> <link href=”__PUBLIC__css/style.css”> @@##@@</script>

5、想放什么都可以,自己設置?

六、公共模塊common的使用

common模塊屬于公共模塊,Thinkphp框架,默認就能調用。

實際用處:任何模塊都可能用到的模型、控制、事件提取出來放到公共模塊下。

1、公共事件 appscommoncommon.php

作用:一般存放密碼加密、下拉框封裝、讀取某文件夾下文件

/** ?*?密碼加密 ?*?@param?string?$password ?*?@param?string?$password_salt ?*?@return?string ?*/ function?password($password,?$password_salt){ ????return?md5(md5($password)?.?md5($password_salt)); }

2、公共配置 appscommonconfig.php

把Index模塊、Admin模塊公用的部分提取出來放到這里面,如:公用的模板路徑

'template'???????????????=&gt;?[ ????//?模板路徑 ????'view_path'????=&gt;?'template/', ]

3、公共語言包 appscommonlangzh-cn.php

比如經常用到的詞 提交成功、提交失敗、執行成功、執行錯誤、添加成功、添加失敗、修改成功、修改失敗、刪除成功、刪除失敗… 可以放到公共語言包,在Index模塊、Admin模塊都可以用的到。

<?php /**  * 全局語言包  * zh-cn  * */ return [     &#39;success&#39;          =>?'執行成功', ????'error'????????????=&gt;?'執行失敗', ????'add_success'??????=&gt;?'添加成功', ????'add_error'????????=&gt;?'添加失敗', ????'edit_success'?????=&gt;?'修改成功', ????'edit_error'???????=&gt;?'修改失敗', ????'delete_success'???=&gt;?'刪除成功', ????'delete_error'?????=&gt;?'刪除失敗', ];

php頁面調用:$lang = lang(‘success’)

html頁面調用:{:lang(‘success’)}

4、公共控制器 appscommoncommon.php

跟上面差不多個意思 Index模塊、Admin模塊都能用到的放這里。

5、公共模塊 appscommoncommon.php

跟上面差不多個意思 Index模塊、Admin模塊都能用到的放這里。

七、設置錯誤頁面①

設置網站的錯誤提示頁面,也是一個很重要的環節。

1、空操作

在當前控制器里面增加_empty操作

public?function?_empty(){ ????$this-&gt;error('方法不存在'); } Public?function?index(){??????? }

測試方法:

正常:

http://localhost/thinkphp/index/index/index

錯誤: 會提示“方法不存在”

http://localhost/thinkphp/index/index/df

2、空控制器

在模塊下建立Error控制器,

位置: index/error.php 相關參數:empty_controller

代碼:

<?php /**  * 前端首頁  * */ namespace appindexcontroller; use appindexcontroller; class Error extends IndexBase {     public function index(){         echo &#39;訪問的控制器不存在&#39;;     } }

測試:http://localhost/thinkphp/index/inde3dfx/index

3、異常錯誤拋出

能夠影響它的是,當前模塊下的配置文件。如果當前配置文件無效,則會自動鎖定公共模塊下的配置參數。

相關參數:exception_tmpl,error_message

//?異常頁面的模板文件 'exception_tmpl'=&gt;?THINK_PATH?.?'tpl'?.?DS?.?'think_exception.tpl',

八、設置錯誤頁面②

完美的去設置錯誤頁面

1、準備一個錯誤頁面 error.html,位置:thinkphptemplateindexdefaulterror.html ,準備把前段所有的錯誤提示都指向這里。

2、空操作指向

在appsindexcontrollerIndexbase.php,“基類”里面設置_empty。

<?php /**  * 前端基類  * */ namespace appindexcontroller; use  appCommoncontrollerBase; class IndexBase extends  Base {     public function _initialize()     {         parent::_initialize();     }     /**      * 空操作 跳轉      * */     public function _empty(){         //abort();              exception();     //  這兩種方法都可以     } }

3、空控制器指向

在appsindexcontrollerError.php

<?php /**  * 空控制器跳轉  * */ namespace appindexcontroller; use appindexcontroller; class Error extends IndexBase {     public function index(){         abort();     } }

4、異常錯誤指向?

在 index/config.php exception_tmpl 參數

'exception_tmpl'?????????=&gt;?THINK_PATH?.?'tpl'?.?DS?.?'think_exception.tpl', ?//'exception_tmpl'?=&gt;'E:/wamp/www/thinkphp/template/index/default/error.html',

注意:地址一定要絕對路徑。

拓展,

401,404,500等錯誤頁面自定義

相關參數:http_exception_template

手冊地址:http://www.kancloud.cn/manual/thinkphp5/163256

代碼:

config.php

'http_exception_template'????=&gt;??[ ????????//?定義404錯誤的重定向頁面地址 ????????404?=&gt;??ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config ????????('index.default_template').'/404.html', ????????//?還可以定義其它的HTTP?status ????????401?=&gt;??ROOT_PATH.config('template.view_path').config('index.model_name').'/'.config ????????('index.default_template').'/401.html', ????],

控制器調用

abort(404,’錯誤信息’)

error.html,404.html 頁面代碼,可以參考thinkphpthinkphptplthink_exception.tpl

九、路由別名Route

主要作用:隱藏自己的真實路由名稱

Route.php

方法一:

<?php use thinkRoute; Route::alias(&#39;home&#39;,&#39;index/index&#39;); Route::alias(&#39;admin&#39;,&#39;admin/index&#39;);

方法二:

<?php return [     &#39;__pattern__&#39; =>?[ ????????'name'?=&gt;?'w+', ????], ????'[hello]'?????=&gt;?[ ????????':id'???=&gt;?['index/hello',?['method'?=&gt;?'get'],?['id'?=&gt;?'d+']], ????????':name'?=&gt;?['index/hello',?['method'?=&gt;?'post']], ????], ????'__alias__'?=&gt;??[ ????????'home'??=&gt;??'index/index', ???????'admin'=&gt;?'admin/index' ????], ];

http://localhost/thinkphp/index.php/home/test 同等與http://localhost/thinkphp/index.php/index/index/test

http://localhost/thinkphp/index.php/admin/edit/ 同等與http://localhost/thinkphp/index.php/admin/index/edit

注釋:別名 => ‘模型/控制器’ ( 別名等于模塊+控制器)

十、路由設置,隱藏indx.php

網站根目錄下.htaccess

<ifmodule> Options?+FollowSymlinks?-Multiviews RewriteEngine?on RewriteCond?%{REQUEST_FILENAME}?!-d RewriteCond?%{REQUEST_FILENAME}?!-f RewriteRule?^(.*)$?index.php/$1?[QSA,PT,L] </ifmodule>

thinkphp使用方法是什么

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享