Maison >cadre php >PensezPHP >Quelle est la différence entre thinkphp3 et 5 ?

Quelle est la différence entre thinkphp3 et 5 ?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-08-26 15:36:593653parcourir

Quelle est la différence entre thinkphp3 et 5 ?

3.X vieilles idées qui doivent être abandonnées

Changements d'URL

Tout d'abord, je voudrais m'excuser pour les indications incorrectes selon lesquelles le laxisme de 3. 'get' est la méthode pour obtenir 'id' à proprement parler, une telle URL n'appartient pas à $_GET. Elle peut maintenant être obtenue via 'param'. L'utilisation spécifique peut être interrogée via la partie requête.

Modifications du modèle

La nouvelle version de la requête de modèle renvoie "l'objet" par défaut et le système ajoute la méthode "toArray" par défaut. " ou " select " " Essayez d'utiliser " toArray " pour convertir en tableau. J'espère que les développeurs pourront comprendre le concept " d'objet ", essayer d'utiliser " objet " pour utiliser des données ou utiliser la méthode " db " pour faire fonctionner le base de données, et vous rappelle également cette partie. Pour les développeurs qui abusent de « toArray », le résultat de « all » ou « select » est une collection de tableaux d'objets, qui ne peuvent pas être convertis à l'aide de « toArray ».

Recommandations associées : "Tutoriel ThinkPHP"

Nouvelles modifications de version

Nom convention

·Les noms de répertoires et de fichiers utilisent 'minuscule + trait de soulignement' et commencent par une lettre minuscule

·Bibliothèques de classes, function Les fichiers sont uniformément suffixés par .php ;

·Les noms de fichiers des classes sont tous définis dans des espaces de noms, et le chemin de l'espace de noms est cohérent avec le chemin du fichier de bibliothèque de classes ( y compris les majuscules et les minuscules);

·Le nom de la classe et le nom du fichier de classe doivent être cohérents et utiliser uniformément la dénomination en casse chameau (la première lettre est en majuscule)

Fonction

·Le système ne repose plus sur aucune fonction, mais fournit uniquement des fonctions d'assistance pour les packages d'opérations couramment utilisés

; ·Les fonctions à une seule lettre sont abandonnées et le système charge les fonctions d'assistance par défaut, en particulier reportez-vous au chapitre précédent « Fonction d'assistance »

Routage

 ; L'accès URL 5.0 ne prend plus en charge le mode URL ordinaire, et le routage ne prend pas en charge les définitions de routes régulières, mais tous les changements apportés à la méthode de routage des règles et aux règles variables (définition régulière), qui ne seront pas détaillés ici.

Contrôleur

L'espace de noms du contrôleur a été ajusté et il n'est pas nécessaire d'hériter d'une classe de contrôleur.

·L'espace de noms de la bibliothèque de classes d'application est unifié en tant qu'application (modifiable) au lieu du nom du module

·Le nom de la classe ; le contrôleur est par défaut Sans le suffixe Controller, vous pouvez configurer le paramètre controller_suffix pour activer le suffixe de classe du contrôleur ;

·La méthode de fonctionnement du contrôleur utilise le retour pour renvoyer des données au lieu d'une sortie directe

·Abolir les méthodes originales de pré- et post-opération

Comparaison de versions

Méthode d'écriture du contrôleur de version 3.2

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller 
{
    public function hello()
    {
        echo &#39;hello,thinkphp!&#39;;
    }
}

Contrôle de version 5.0 Écriture de l'appareil

namespace app\index\controller;
class Index 
{
    public function index()
    {
        return &#39;hello,thinkphp!&#39;;
    }
}

Nom du contrôleur de version 3.2

IndexController.class.php

Nom du contrôleur de version 5.0

Index.php

**Modèle de sortie correct dans le contrôleur **

5.0 génère le modèle dans le contrôleur. La méthode d'utilisation est la suivante :

Si vous héritez de thinkController, vous pouvez utiliser :

return $this->fetch(&#39;index/hello&#39;);

Si votre le contrôleur n'hérite pas de thinkController. , utilisez :

return view(&#39;index/hello&#39;);

Modèle

Si vous devez comparer les améliorations avec l'ancienne version, le modèle est divisé en trois parties : base de données , modèle et validateur, qui correspondent respectivement à la méthode M , modèle et vérification automatique, qui ont tous été améliorés en même temps. Une brève introduction est donnée ci-dessous.

Base de données

La fonction de requête de base de données de 5.0 a été améliorée. La requête en chaîne qui devait à l'origine être utilisée via le modèle peut être appelée directement via la classe Db, et l'appel de la fonction M d'origine peut être modifié. Utilisez la fonction db, par exemple :

Version 3.2

M(&#39;User&#39;)->where([&#39;name&#39;=>&#39;thinkphp&#39;])->find();

Version 5.0

db(&#39;User&#39;)->where(&#39;name&#39;,&#39;thinkphp&#39;)->find();

Modèle

La nouvelle version de model query ajoute des méthodes statiques, par exemple :

User::get(1); 
User::all();
User::where(&#39;id&#39;,&#39;>&#39;,10)->find();

La partie modèle a amélioré de nombreuses fonctions, veuillez vous référer au "Chapitre Modèle" pour plus de détails.

Vérification automatique

Par rapport à l'ancienne version, elle peut être comprise comme la vérification automatique précédente et différente de la vérification précédente

ThinkPHP5 ; 0 la vérification est utilisée. La classe ou le validateur thinkValidate indépendant est utilisé pour la vérification, qui est non seulement applicable au modèle, mais peut également être directement appelée dans le contrôleur. Veuillez vous référer au chapitre « Vérification » pour les règles d'utilisation spécifiques, qui ne le seront pas. être décrit ici.

Fichier de configuration

La nouvelle version comporte de nombreux paramètres de configuration ou niveaux de configuration différents de ceux d'avant. Il est recommandé de consulter le code ou de le lire attentivement. le manuel de développement officiel, ne perdez pas votre journée entière sur des problèmes de configuration.

Exceptions

5.0 a une tolérance zéro pour les erreurs. Par défaut, des exceptions seront levées pour tout niveau d'erreur, et la page des exceptions a été repensée pour afficher les erreurs détaillées. .informations pour faciliter le débogage.

Abandon des constantes système

Par rapport aux versions précédentes, la version 5.0 a procédé à un grand nombre d'abandons de modifications du système. Les utilisateurs peuvent les définir eux-mêmes s'ils ont des besoins pertinents.

下面是废除常量

REQUEST_METHOD IS_GET IS_POST IS_PUT IS_DELETE IS_AJAX __EXT__ COMMON_MODULE MODULE_NAME CONTROLLER_NAME ACTION_NAME 
APP_NAMESPACE APP_DEBUG MODULE_PATH等

部分常量可以在Request里面进行获取,具体参考“请求章节”。

注:再次说明本章节仅仅为之前使用3.X版本开发者快速理解5.0所写,具体5.0的功能还需要开发者通读手册。

助手函数

5.0 助手函数和 3.2 版本的单字母函数对比如下:

Quelle est la différence entre thinkphp3 et 5 ?

1、过去的单字母函数已完全被替换掉,如下:

S=>cache,C=>config,M/D=>model,U=>url,I=>input,E=>exception,L=>lang,A=>controller,R=>action

2、模版渲染:

$this->display() => return view()/return $this->fetch();

3、在model中调用自身model:

$this => Db::table($this->table)

4、在新建控制器与模型时的命名:

①控制器去掉后缀controller:UserController => User

②模型去掉后缀model:UserModel => User

5、url访问:

如果控制器名使用驼峰法,访问时需要将各字母之间用下划线链接后进行访问。

eg:控制器名为AddUser,访问是用add_user来进行访问

6、在TP5中支持配置二级参数(即二维数组),配置文件中,二级配置参数读取:

①Config::get('user.type');

②config('user.type');

7、模板中支持三元运算符的运算:{$info.status ? $info.msg : $info.error}还支持这种写法:{$varname.aa ?? 'xxx'}或{$varname.aa ?: 'xxx'}

8、TP5内置标签:

系统内置的标签中,volist、switch、if、elseif、else、foreach、compare(包括所有的比较标签)、(not)present、(not)empty、(not)defined等。

9、TP5数据验证:

$validate = new Validate([&#39;name&#39; => &#39;require|max:25&#39;,&#39;email&#39; => &#39;email&#39;]);
$data = [&#39;name&#39; => &#39;thinkphp&#39;,&#39;email&#39; => &#39;thinkphp@qq.com&#39;];
if(!validate->check($data)){
debug::dump($validate->getError());
}

注:使用助手函数实例化验证器——$validate = validate('User');

10、TP5实现了内置分页,使用如下:

查询状态为1的用户数据,且每页显示10条数据

$list = model(&#39;User&#39;)->where(&#39;status&#39;,1)->paginate(10);
$page = $this->render();
$this->assign(&#39;_list&#39;,$list);
$this->assign(&#39;_page&#39;,$page);
return $this->fetch();

模板文件中分页输出代码如下:

<div>{$_page}</div>

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!

Déclaration:
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
Article précédent:Comment utiliser thinkphpArticle suivant:Comment utiliser thinkphp