Maison >développement back-end >tutoriel php >Présentation détaillée de l'architecture globale du framework thinkPHP5.0

Présentation détaillée de l'architecture globale du framework thinkPHP5.0

黄舟
黄舟original
2017-03-27 09:17:372906parcourir

Cet article présente principalement l'architecture globale du framework thinkPHP5.0, et présente brièvement les applications, les modules, le MVC, les pilotes, les comportements et l' espace de noms de thinkPHP5. 0 et d'autres concepts et utilisations de base, les amis dans le besoin peuvent se référer à

Cet article décrit l'architecture globale du framework thinkPHP5.0. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

L'application ThinkPHP5.0 est basée sur MVC (Modèle-Vue-Contrôleur) Venez vous organiser.

MVC est un modèle de conception qui impose la séparation de l'entrée, du traitement et de la sortie de l'application. À l'aide de MVC, une application est divisée en trois composants principaux : le modèle (M), la vue (V) et le contrôleur (C), chacun gérant ses propres tâches.

L'accès URL de

5.0 est déterminé par le routage. Si le routage est désactivé ou s'il n'y a pas d'itinéraire correspondant, il est basé sur : serverName/index .php (ou autres

fichiers d'entrée d'application)/module/controller/operation/parameter/value...

Il est nécessaire de comprendre certains des éléments suivants concepts, qui peuvent être Il sera mentionné fréquemment dans le contenu suivant.

Fichier d'entrée

Le fichier PHP demandé par l'utilisateur, chargé de traiter le index.phpcycle de vieadmin.php d'une requête (attention, pas nécessairement une URL demande), et enfin Le fichier d'entrée commun est think Parfois, de nouveaux fichiers d'entrée sont ajoutés pour certains besoins particuliers, comme un fichier d'entrée

défini séparément pour le module d'arrière-plan ou une entrée de programme de contrôleur

. .

Application

L'application dans ThinkPHP est un thinkAppobjetAPP_PATH qui gère l'architecture et le cycle de vie du système. Il est complété par la classe

du système. . Application Elle est généralement appelée et exécutée dans un fichier d'entrée. Les applications avec le même répertoire d'application (

) sont considérées comme la même application, mais une application peut avoir plusieurs fichiers d'entrée.

L'application possède son propre fichier de configuration indépendant et son propre fichier (de fonction) public.

Module

Une application typique est composée de plusieurs modules. Ces modules sont généralement un sous-répertoire sous le répertoire de l'application, et chaque module est constitué de fichiers de configuration indépendants, de fichiers publics et.

bibliothèque de classes

fichiers.

5.0 prend en charge la conception d'architecture à module unique. S'il n'y a qu'un seul module sous votre application, le sous-répertoire de ce module peut être omis et modifié dans le fichier de configuration de l'application
'app_multi_module' =>  false,
 :

Contrôleur

Chaque module possède une bibliothèque de classes MVC indépendante et un fichier de configuration. Il existe plusieurs contrôleurs sous un module chargé de répondre aux demandes, et chaque contrôleur est en fait un contrôleur distinct. classe.

Le contrôleur est principalement responsable de la réception des requêtes, de l'appel du traitement du modèle associé et enfin de sa sortie via la vue. À proprement parler, le contrôleur ne doit pas être trop impliqué dans le traitement de la logique métier.

En fait, dans la version 5.0, le contrôleur peut être ignoré Grâce au routage, nous pouvons directement envoyer la demande à un certain modèle ou à une autre classe pour traitement.

La classe de contrôleur de 5.0 est plus flexible et n'a pas besoin d'hériter

d'une bibliothèque de classes de base.

Une classe typique de contrôleur d'index est la suivante :
namespace app\index\controller;
class Index 
{
  public function index()
  {
    return 'hello,thinkphp!';
  }
}

Opération

Un contrôleur contient plusieurs opérations (méthodes), méthodes de fonctionnement Il est la plus petite unité d’accès URL.

Ce qui suit est la définition de la méthode de fonctionnement d'un contrôleur d'index typique, qui contient deux méthodes de fonctionnement :
namespace app\index\controller;
class Index 
{
  public function index()
  {
    return 'index';
  }
  public function hello($name)
  {
    return 'Hello,'.$name;
  }
}

La méthode de fonctionnement ne peut utiliser aucun paramètre, si un paramètre non facultatif est paramètre défini, le paramètre doit être transmis via la requête de l'utilisateur. S'il s'agit d'une requête URL, il est généralement transmis via $_GET ou $_POST. La

Modèle

Classe de modèle

complète généralement la logique métier réelle et l'encapsulation des données, et renvoie des données indépendantes du format.

La classe de modèle n'a pas nécessairement besoin d'accéder à la base de données, et dans la conception de l'architecture 5.0, la connexion à la base de données ne sera établie que lorsque l'opération requête
de la base de données réelle est effectuée. Oui Une vraie connexion paresseuse.

ThinkPHP的模型层支持多层设计,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。

视图

控制器调用模型类后返回的数据通过视图组装成不同格式的输出。视图根据不同的需求,来决定调用模板引擎进行内容解析后输出还是直接输出。

视图通常会有一系列的模板文件对应不同的控制器和操作方法,并且支持动态设置模板目录。

驱动

系统很多的组件都采用驱动式设计,从而可以更灵活的扩展,驱动类的位置默认是放入核心类库目录下面,也可以重新定义驱动类库的命名空间而改变驱动的文件位置。

行为

行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。

要执行行为,首先要在应用程序中进行行为侦听,例如:

// 在app_init位置侦听行为
\think\Hook::listen('app_init');

然后对某个位置进行行为绑定:

// 绑定行为到app_init位置
\think\Hook::add('app_init','\app\index\behavior\Test');

一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。

命名空间

ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4自动加载规范。

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