Heim > PHP-Framework > Denken Sie an PHP > So verwenden Sie thinkphp

So verwenden Sie thinkphp

爱喝马黛茶的安东尼
Freigeben: 2019-08-26 15:15:26
Original
7215 Leute haben es durchsucht

So verwenden Sie thinkphp

1. Projektbereitstellung

1. Bereitstellung eines virtuellen Hosts/lokale Bereitstellung

Entfernen Sie public/index.php und wechseln Sie im Stammverzeichnis zu /index.php. Erstellen Sie die Datei index.php im Stammverzeichnis der Website mit folgendem Inhalt:

<?php
// 定义应用目录
define(&#39;APP_PATH&#39;, __DIR__ . &#39;/apps/&#39;);
// 加载框架引导文件
require  &#39;./thinkphp/start.php&#39;;
Nach dem Login kopieren

Das ist im Grunde die einfachste Konfiguration.

2. Serverbereitstellung

Der Dateieintrag für die Serverbereitstellung ist öffentlich. Vorteile: Nur Dateien im öffentlichen Verzeichnis sind für Außenstehende sichtbar Netzwerk. Zum Beispiel: Thinkphp, Apps, Extend, Tests, Vendor. Die einfachere Bedeutung besteht darin, dass auf den Inhalt dieser Dateien nicht über den Domänennamen zugegriffen werden kann, dies jedoch keinen Einfluss auf die Verwendung des Frameworks hat.

2. Module erstellen (Module automatisch generieren)

Mein Projekt wird im lokalen www/thinkphp-Verzeichnis bereitgestellt. Überlegen Sie sich vorher genau, wie viele Module Sie für die Fertigstellung Ihres Projekts benötigen.

Instanz starten

1. Erstellen Sie drei Module: Common (öffentliches Modul), Home (Front-End-Modul) und Admin (Back-End-Modul). Öffentliche Module sind unerlässlich.

Wenn es geändert wird, ist es index.php unter public. Öffnen Sie es wie folgt:

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

Fügen Sie diese beiden Sätze am Ende hinzu

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

build.php-Konfiguration (automatisches Verzeichnis generieren). ) Handbuchreferenz: http://www.kancloud.cn/manual/thinkphp5/118021

Im Stammverzeichnis des Projekts befindet sich eine Datei build.php. Nach dem Öffnen sehen Sie etwa Folgendes :

<?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;],
    ],
    // 其他更多的模块定义
];
Nach dem Login kopieren

Dann fügen wir hier den Dateinamen hinzu, den wir benötigen. Die angegebene Demo kann wie folgt direkt auskommentiert werden:

<?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;],
    ], 
];
Nach dem Login kopieren

1) Darunter werden später sowohl SITE_PATH als auch RUNTIME_PATH verwendet. und alle haben Vorrang. Fügen Sie es in index.php ein, um es später einfacher aufrufen zu können.

2) Diese beiden Dinge sollten zusammen verwendet werden

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

Verwandte Empfehlungen: „

ThinkPHP Tutorial

3. Erstellen Sie vorher eine Basis Startklasse

, Sie müssen zuerst die „Basisklasse“ einrichten. Wenn Sie beispielsweise auf den Controller zugreifen möchten, der sich auf das Mitgliedercenter bezieht, müssen diese Controller über eine „Anmeldebeschränkung“ verfügen, um den Zugriff auf den mitgliederbezogenen Controller zu ermöglichen? Die Rolle der Basisklasse kommt zum Vorschein.

1. Erstellen Sie drei Hauptbasisklassen

Ursprüngliche Basisklasse

Speicherort: thinkphpappscommoncontrollerbase.php

Funktion: Inhalt unter dem Basismodul, Indexmodul, und Admin-Modul aufgerufen werden.

Code:

<?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;;
    }
}
Nach dem Login kopieren

Basisklasse des Indexmoduls

Speicherort: thinkphpappscommoncontrollerbase.php

Funktion: Controller unter dem Indexmodul müssen die Basisklasse „erben“. " und "Basisklasse aufrufen".

Code:

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

Admin-Modul-Basisklasse

Speicherort: thinkphpappscommoncontrollerbase.php

Funktion: Controller unter dem Admin-Modul müssen „die Basisklasse erben“ Klasse“ und „Basisklasse aufrufen“.

Code:

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

(Benutzermodul-Basisklasse, wenn ein Mitglied vorhanden ist, muss dieses ebenfalls erstellt werden)

Der Hauptzweck der Erstellung einer Basisklasse besteht darin, „ inherit“ mit „call“.

4. Legen Sie den Vorlagenpfad fest

Der Standard-Vorlagenpfad befindet sich in der Modul-/Ansichtsdatei. Wenn Sie der Meinung sind, dass dies nicht bequem zu verwalten ist und Sie es im Vorlagenverzeichnis festlegen möchten, können Sie dies tun.

Vorlagenparameter. Weitere Parameter, die betroffen sein können, sind die config.php template->view_path-Parameter unter dem aktuellen Modul.

Praktische Bedienung

1. Gemeinsam genutzte Parameter konfigurieren

Einige Parameter in apps/config.php festlegen, um den Aufruf von config.php im Index- oder Admin-Modul zu erleichtern.

apps/config.php, fügen Sie einige Parameter hinzu.

&#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;,        // 这里可以切换模块下的默认模板名称
],
Nach dem Login kopieren

2. Vorlagenparameter festlegen

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;,
],
Nach dem Login kopieren

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;,
    ],
];
Nach dem Login kopieren

Erweiterung:

1. Vorlagensuffix view_suffix, seine Auswirkungen

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

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

5. Konfigurieren Sie den Datenordner

Wenn Sie sich die verschiedenen Dateien unter dem Projekt ansehen und das Gefühl haben, dass die folgenden Konfigurationen vorliegen möglich.

Konfigurieren Sie den Datenordner und organisieren Sie verschiedene Dateien, damit er komfortabler aussieht.

1. Legen Sie den Laufzeitordner

index.php

define(&#39;RUNTIME_PATH&#39;, __DIR__ . &#39;/data/runtime/&#39;);
Nach dem Login kopieren

2 fest. Speichern Sie jquery.js, Bootstrap, einige Effekt-Plug-Ins usw.

// 视图输出字符串内容替换
&#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;,    
],
Nach dem Login kopieren

4. Definieren Sie den Vorlagendateipfad, um den Aufruf von CSS, JS, Bildern unter der Vorlage zu erleichtern

&#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;,
],
Nach dem Login kopieren

Vorlagenseitenreferenz :

<script src=__PUBLIC__js/jqueyr.js”>
<link href=”__PUBLIC__css/style.css”>
<img src="__PUBLIC__images/1.png">
Nach dem Login kopieren

5. Sie können alles eingeben, was Sie wollen, es selbst einstellen

6. Verwendung des öffentlichen Moduls common

Das common-Modul ist Standardmäßig kann ein öffentliches Modul, das Thinkphp-Framework, aufgerufen werden.

Praktische Verwendung: Extrahieren Sie die Modelle, Steuerelemente und Ereignisse, die von jedem Modul verwendet werden können, und fügen Sie sie dem öffentlichen Modul hinzu.

1. Öffentliche Ereignis-Appscommoncommon.php

Funktion: Generell Passwortverschlüsselung, Dropdown-Box-Kapselung, Dateien in einem Ordner lesen

/**
 * 密码加密
 * @param string $password
 * @param string $password_salt
 * @return string
 */
function password($password, $password_salt){
    return md5(md5($password) . md5($password_salt));
}
Nach dem Login kopieren

2. Öffentliche Konfigurations-Appscommonconfig. php

Extrahieren Sie die gemeinsamen Teile des Indexmoduls und des Admin-Moduls und fügen Sie sie hier ein, z. B.: öffentlicher Vorlagenpfad

&#39;template&#39;               => [
    // 模板路径
    &#39;view_path&#39;    => &#39;template/&#39;,
]
Nach dem Login kopieren

3. Öffentliches Sprachpaket appscommonlangzh-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;,
];
Nach dem Login kopieren

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(){       
}
Nach dem Login kopieren

测试方法:

正常:

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;;
    }
}
Nach dem Login kopieren

测试: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;,
Nach dem Login kopieren

八、设置错误页面②

完美的去设置错误页面

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();     //  这两种方法都可以
    }
}
Nach dem Login kopieren

3、空控制器指向

在apps\index\controller\Error.php

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

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;,
Nach dem Login kopieren

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

拓展,

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;,
    ],
Nach dem Login kopieren

控制器调用

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;);
Nach dem Login kopieren

方法二:

<?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;
    ],
];
Nach dem Login kopieren

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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie thinkphp. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage