首頁 >php框架 >ThinkPHP >thinkphp使用方法是什麼

thinkphp使用方法是什麼

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼原創
2019-08-26 15:15:267241瀏覽

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;;

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

2、伺服器部署

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

二、建立模組(自動產生模組)

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

開始實例

1、建立三個模組 Common(公共模組),Home(前台模組),Admin(後台模組)。公共模組是必不可少的。

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

// 定义应用目录
define(&#39;APP_PATH&#39;, __DIR__ . &#39;/../application/&#39;);
// 加载框架引导文件
require __DIR__ . &#39;/../thinkphp/start.php&#39;;

在後面加上這兩句

$build = include &#39;../build.php&#39;;
// 运行自动生成
\think\Build::run($build);

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

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

<?php
return [
    // 生成应用公共文件
    &#39;__file__&#39; => [&#39;common.php&#39;, &#39;config.php&#39;, &#39;database.php&#39;],
 
    // 定义demo模块的自动生成 (按照实际定义的文件名生成)
    &#39;demo&#39;     => [
        &#39;__file__&#39;   => [&#39;common.php&#39;],
        &#39;__dir__&#39;    => [&#39;behavior&#39;, &#39;controller&#39;, &#39;model&#39;, &#39;view&#39;],
        &#39;controller&#39; => [&#39;Index&#39;, &#39;Test&#39;, &#39;UserType&#39;],
        &#39;model&#39;      => [&#39;User&#39;, &#39;UserType&#39;],
        &#39;view&#39;       => [&#39;index/index&#39;],
    ],
    // 其他更多的模块定义
];

然後我們給我們需要的檔案名稱在這個地方加上,給的demo可以直接註解掉,如下:

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

1)其中的SITE_PATH,與RUNTIME_PATH後面都有用到,所有優先放在index.php裡面方便後面呼叫。

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

$build = include &#39;./build.php&#39;;
// 运行自动生成
\think\Build::run($build);

相關推薦:《ThinkPHP教程

三、創建基類別

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

1、建立三大基底類別

原始基底類別

位置:thinkphp\apps\common\controller\base.php

作用:base模組下的內容,Index模組,和Admin模組都可以呼叫。

程式碼:

<?php
/**
 * 原始基类
 * */
namespace app\Common\controller;
use  think\Controller;
class Base extends Controller{
    public function _initialize()
    {
        parent::_initialize();
        echo &#39;原始基类&#39;;
    }
    public function test1(){
        return &#39;test1&#39;;
    }
}

Index模組基底類別

位置:thinkphp\apps\common\controller\base.php

作用:Index模組下的控制器,都要「繼承基底類別」並且「呼叫基底類別」。

程式碼:

<?php
/**
 * 前端基类
 * */
namespace app\index\controller;
use  app\Common\controller\Base;
class IndexBase extends  Base
{
    public function _initialize()
    {
        parent::_initialize();
    }
    public function index()
    {        
    }
}

Admin模組基類別

位置:thinkphp\apps\common\controller\base.php

作用:Admin模組下的控制器,都要「繼承基底類別」並且「呼叫基底類別」。

程式碼:

/**
 * 后台首页
 * */
namespace app\Admin\controller;
use app\Admin\controller\AdminBase;
class Index extends AdminBase
{
    public function _initialize()
    {
        parent::_initialize();
    }
    public function index()
    {
        return $this->fetch();
    }
}

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

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

四、設定模板路徑

預設的模板路徑在模組/view檔案裡面。如果你覺得這樣不太方便管理,想要把他設定Template目錄下,可以這樣做。

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

實際操作

1、設定共享參數

在apps/config.php設定一些參數,方便在Index或Admin模組下config.php呼叫。

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

&#39;template&#39;               => [// 模板路径
        &#39;view_path&#39;    => &#39;template/&#39;,     // 就是这里
/**
     * 前台文件配置
     * Author: MR.zhou
     * */
    &#39;index&#39; => [
        // 模快名称
        &#39;model_name&#39; =>&#39;index&#39;,
        // 默认模板文件名称
        &#39;default_template&#39; => &#39;default&#39;,       // 这里可以切换模块下的默认模板名称
    ],
    /**
     * 后台文件配置
     * Author: MR.zhou
     * */
    &#39;admin&#39;=>[
        // 模快名称
        &#39;model_name&#39; =>&#39;admin&#39;,
        // 默认模板文件名称
        &#39;default_template&#39; =>&#39;default&#39;,        // 这里可以切换模块下的默认模板名称
],

2、設定模板參數

index/config.php

&#39;template&#39;=> [
    // 模板路径
    &#39;view_path&#39;=> config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.default_template&#39;).&#39;/&#39;,
],

admin/config.php

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

擴充:

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(&#39;RUNTIME_PATH&#39;, __DIR__ . &#39;/data/runtime/&#39;);
###2、設定upload,存放上傳圖片、上傳檔案#######3、設定static,存放jquery.js、bootstrap、一些效果插件什麼的###
// 视图输出字符串内容替换
&#39;view_replace_str&#39;       => [
    &#39;__DATA__&#39; => SITE_PATH.&#39;data/&#39;,
    // 上传文件路径
    &#39;__UPLOAD__&#39; =>SITE_PATH.&#39;data/upload/&#39;,
    //  静态文件路径 (如bootshop,js,css)
    &#39;__STATIC__&#39; =>SITE_PATH.&#39;data/upload/&#39;,    
],
###4、定義範本檔案路徑,方便呼叫範本下的css、js、images###
&#39;view_replace_str&#39;       => [
    // 模板文件路径
    &#39;__TEMPLATE__&#39; => config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.default_template&#39;)
    .&#39;/&#39;,
    // 模板下的共享文件路径(css,js,images...)
    &#39;__PUBLIC__&#39; => SITE_PATH.&#39;/&#39;.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config(&#39;index.
    default_template&#39;).&#39;/public/&#39;,
],
###範本頁引用:###
<script src=__PUBLIC__js/jqueyr.js”>
<link href=”__PUBLIC__css/style.css”>
<img src="__PUBLIC__images/1.png">
###5、想放什麼都可以,自己設定 #########六、公共模組common的使用#########common模組屬於公共模組,Thinkphp框架,預設就能調用。 ######實際用處:任何模組都可能用到的模型、控制、事件提取出來放到公共模組下。 ######1、公共事件apps\common\common.php######作用:一般存放密碼加密、下拉方塊封裝、讀取某資料夾下檔案###
/**
 * 密码加密
 * @param string $password
 * @param string $password_salt
 * @return string
 */
function password($password, $password_salt){
    return md5(md5($password) . md5($password_salt));
}
###2、公用配置apps\common\config.php######把Index模組、Admin模組公用的部分提取出來放到這裡面,如:公用的模板路徑###
&#39;template&#39;               => [
    // 模板路径
    &#39;view_path&#39;    => &#39;template/&#39;,
]
###3、公共語言包apps \common\lang\zh-cn.php#####

比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败... 可以放到公共语言包,在Index模块、Admin模块都可以用的到。

<?php
/**
 * 全局语言包
 * zh-cn
 * */
return [
    &#39;success&#39;          => &#39;执行成功&#39;,
    &#39;error&#39;            => &#39;执行失败&#39;,
    &#39;add_success&#39;      => &#39;添加成功&#39;,
    &#39;add_error&#39;        => &#39;添加失败&#39;,
    &#39;edit_success&#39;     => &#39;修改成功&#39;,
    &#39;edit_error&#39;       => &#39;修改失败&#39;,
    &#39;delete_success&#39;   => &#39;删除成功&#39;,
    &#39;delete_error&#39;     => &#39;删除失败&#39;,
];

php页面调用:$lang = lang('success')

html页面调用:{:lang('success')}

4、公共控制器 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

5、公共模块 apps\common\common.php

跟上面差不多个意思 Index模块、Admin模块都能用到的放这里。

七、设置错误页面①

设置网站的错误提示页面,也是一个很重要的环节。

1、空操作

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

public function _empty(){
    $this->error(&#39;方法不存在&#39;);
}
Public function index(){       
}

测试方法:

正常:

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

错误: 会提示“方法不存在”

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

2、空控制器

在模块下建立Error控制器,

位置: index/error.php 相关参数:empty_controller

代码:

<?php
/**
 * 前端首页
 * */
namespace app\index\controller;
use app\index\controller;
class Error extends IndexBase
{
    public function index(){
        echo &#39;访问的控制器不存在&#39;;
    }
}

测试:http://localhost/thinkphp/index/inde3dfx/index

3、异常错误抛出

能够影响它的是,当前模块下的配置文件。如果当前配置文件无效,则会自动锁定公共模块下的配置参数。

相关参数:exception_tmpl,error_message

// 异常页面的模板文件
&#39;exception_tmpl&#39;=> THINK_PATH . &#39;tpl&#39; . DS . &#39;think_exception.tpl&#39;,

八、设置错误页面②

完美的去设置错误页面

1、准备一个错误页面 error.html,位置:thinkphp\template\index\default\error.html ,准备把前段所有的错误提示都指向这里。

2、空操作指向

在apps\index\controller\Indexbase.php,“基类”里面设置_empty。

<?php
/**
 * 前端基类
 * */
namespace app\index\controller;
use  app\Common\controller\Base;
class IndexBase extends  Base
{
    public function _initialize()
    {
        parent::_initialize();
    }
    /**
     * 空操作 跳转
     * */
    public function _empty(){
        //abort();     
        exception();     //  这两种方法都可以
    }
}

3、空控制器指向

在apps\index\controller\Error.php

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

4、异常错误指向 

在 index/config.php exception_tmpl 参数

&#39;exception_tmpl&#39;         => THINK_PATH . &#39;tpl&#39; . DS . &#39;think_exception.tpl&#39;,
 //&#39;exception_tmpl&#39; =>&#39;E:/wamp/www/thinkphp/template/index/default/error.html&#39;,

注意:地址一定要绝对路径。

拓展,

401,404,500等错误页面自定义

相关参数:http_exception_template

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

代码:

config.php

&#39;http_exception_template&#39;    =>  [
        // 定义404错误的重定向页面地址
        404 =>  ROOT_PATH.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config
        (&#39;index.default_template&#39;).&#39;/404.html&#39;,
        // 还可以定义其它的HTTP status
        401 =>  ROOT_PATH.config(&#39;template.view_path&#39;).config(&#39;index.model_name&#39;).&#39;/&#39;.config
        (&#39;index.default_template&#39;).&#39;/401.html&#39;,
    ],

控制器调用

abort(404,'错误信息')

error.html,404.html 页面代码,可以参考thinkphp\thinkphp\tpl\think_exception.tpl

九、路由别名Route

主要作用:隐藏自己的真实路由名称

Route.php

方法一:

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

方法二:

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

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 mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
</IfModule>

以上是thinkphp使用方法是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn