Maison > cadre php > PensezPHP > Comment utiliser thinkphp

Comment utiliser thinkphp

爱喝马黛茶的安东尼
Libérer: 2019-08-26 15:15:26
original
7235 Les gens l'ont consulté

Comment utiliser thinkphp

1. Déploiement du projet

1. >Supprimez public/index.php et remplacez-le par /index.php dans le répertoire racine. Créez le fichier index.php dans le répertoire racine du site Web avec le contenu suivant

<?php
// 定义应用目录
define(&#39;APP_PATH&#39;, __DIR__ . &#39;/apps/&#39;);
// 加载框架引导文件
require  &#39;./thinkphp/start.php&#39;;
Copier après la connexion

C'est essentiellement cela. C'est la configuration la plus simple.

2. Déploiement du serveur

L'entrée du fichier du projet de déploiement du serveur est publique Avantages : Seuls les fichiers du répertoire public sont visibles par les étrangers. Les fichiers au même niveau que public sont masqués en externe. réseau. Tels que : thinkphp, applications, extension, tests, fournisseur. La signification la plus simple est que le contenu de ces fichiers n’est pas accessible via le nom de domaine, mais cela n’affecte pas l’utilisation du framework.

2. Créer des modules (générer automatiquement des modules)

Mon projet est déployé dans le répertoire local www/thinkphp. Avant de le faire, réfléchissez clairement au nombre de modules dont vous aurez besoin pour mener à bien votre projet.

Démarrez l'instance

1. Créez trois modules : Common (module public), Home (module front-end) et Admin (module back-end). Les modules publics sont essentiels.

Une fois modifié, il s'agit d'index.php sous public. Ouvrez-le comme ceci

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

Ajoutez ces deux phrases à la fin

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

configuration build.php (génération automatique du répertoire). ) Référence du manuel : http://www.kancloud.cn/manual/thinkphp5/118021

Il y a un fichier build.php dans le répertoire racine du projet. Après l'avoir ouvert, vous verrez quelque chose comme ceci. :

<?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;],
    ],
    // 其他更多的模块定义
];
Copier après la connexion

Ensuite, nous ajoutons ici le nom de fichier dont nous avons besoin. La démo donnée peut être commentée directement, comme suit :

<?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;],
    ], 
];
Copier après la connexion

1) Parmi eux, SITE_PATH et RUNTIME_PATH sont tous deux utilisés plus tard, et tous sont prioritaires. Mettez-le dans index.php pour un appel facile plus tard.

2) Ces deux choses doivent être utilisées ensemble

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

Recommandations associées : "

Tutoriel ThinkPHP

"

3. en commençant la classe

, vous devez d'abord configurer la "classe de base". Pourquoi ? Par exemple, si vous souhaitez accéder au contrôleur lié au centre membre, ces contrôleurs doivent-ils avoir une « restriction de connexion » pour autoriser l'accès au contrôleur lié aux membres ? Le rôle de la classe de base ressort.

1. Créer trois classes de base principales

Classe de base originale

Emplacement : thinkphpappscommoncontrollerbase.php

Fonction : Contenu sous le module de base, module Index, et le module Admin peut être appelé.

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;;
    }
}
Copier après la connexion

Classe de base du module Index

Emplacement : thinkphpappscommoncontrollerbase.php

Fonction : les contrôleurs sous le module Index doivent "hériter de la classe de base" " et " appeler la classe de base ".

Code :

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

Classe de base du module Admin

Emplacement : thinkphpappscommoncontrollerbase.php

Fonction : Les contrôleurs du module Admin doivent "hériter de la classe de base" " et " appeler la classe de base ".

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();
    }
}
Copier après la connexion

(Classe de base du module utilisateur, s'il y a un membre, celui-ci doit également être créé)

Le but principal de la création d'une classe de base est de " hériter" avec "appel".

4. Définissez le chemin du modèle

Le chemin du modèle par défaut se trouve dans le fichier module/view. Si vous pensez que cela n'est pas pratique à gérer et que vous souhaitez le définir dans le répertoire Modèle, vous pouvez le faire.

Paramètres du modèle, les autres paramètres qui peuvent être affectés sont les paramètres config.php template->view_path sous le module actuel.

Opération pratique

1. Configurez les paramètres partagés

Définissez certains paramètres dans apps/config.php pour faciliter l'appel de config.php sous le module Index ou Admin.

apps/config.php, ajoutez quelques paramètres.

&#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;,        // 这里可以切换模块下的默认模板名称
],
Copier après la connexion

2. Définir les paramètres du modèle

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;,
],
Copier après la connexion

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;,
    ],
];
Copier après la connexion

Extension :

1. Suffixe de modèle view_suffix, son impact

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

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

5. Configurez le dossier de données

Si vous regardez les différents fichiers du projet et sentez qu'ils sont en désordre, vous devrait Les configurations suivantes sont possibles.

Configurez le dossier de données et organisez divers fichiers pour le rendre plus confortable.

1. Définissez le dossier d'exécution

index.php

define(&#39;RUNTIME_PATH&#39;, __DIR__ . &#39;/data/runtime/&#39;);
Copier après la connexion

2. Définissez le téléchargement pour stocker les images téléchargées et télécharger les fichiers

3. Stockez jquery.js, bootstrap, certains plug-ins d'effets, etc.

// 视图输出字符串内容替换
&#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;,    
],
Copier après la connexion

4 Définissez le chemin du fichier modèle pour faciliter l'appel de CSS, js, d'images sous le modèle

&#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;,
],
Copier après la connexion

Référence de la page du modèle. :

<script src=__PUBLIC__js/jqueyr.js”>
<link href=”__PUBLIC__css/style.css”>
<img src="__PUBLIC__images/1.png">
Copier après la connexion

5. Vous pouvez mettre ce que vous voulez, le paramétrer vous-même

6. Utilisation du module public commun

Le module commun est un module public, le framework Thinkphp, par défaut Peut être appelé.

Utilisation pratique : Extrayez les modèles, les contrôles et les événements pouvant être utilisés par n'importe quel module et placez-les sous le module public.

1. Événement public appscommoncommon.php

Fonction : stocker généralement le cryptage du mot de passe, l'encapsulation de la liste déroulante, lire les fichiers dans un dossier

/**
 * 密码加密
 * @param string $password
 * @param string $password_salt
 * @return string
 */
function password($password, $password_salt){
    return md5(md5($password) . md5($password_salt));
}
Copier après la connexion

2. php

Extrayez les parties communes du module Index et du module Admin et placez-les ici, par exemple : chemin du modèle public

&#39;template&#39;               => [
    // 模板路径
    &#39;view_path&#39;    => &#39;template/&#39;,
]
Copier après la connexion

3.

比如经常用到的词 提交成功、提交失败、执行成功、执行错误、添加成功、添加失败、修改成功、修改失败、删除成功、删除失败... 可以放到公共语言包,在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;,
];
Copier après la connexion

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(){       
}
Copier après la connexion

测试方法:

正常:

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;;
    }
}
Copier après la connexion

测试: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;,
Copier après la connexion

八、设置错误页面②

完美的去设置错误页面

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();     //  这两种方法都可以
    }
}
Copier après la connexion

3、空控制器指向

在apps\index\controller\Error.php

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

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;,
Copier après la connexion

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

拓展,

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;,
    ],
Copier après la connexion

控制器调用

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;);
Copier après la connexion

方法二:

<?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;
    ],
];
Copier après la connexion

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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal