Maison >développement back-end >Problème PHP >Quelles sont les entrées uniques du framework PHP ?

Quelles sont les entrées uniques du framework PHP ?

(*-*)浩
(*-*)浩original
2019-09-24 10:01:592083parcourir

Une application de saisie de fichier unique, toutes les demandes sont reçues via index.php et transmises au code de fonction, donc certaines choses deviennent beaucoup plus simples, comme les contrôles de sécurité des données, les statistiques d'accès, etc.

Quelles sont les entrées uniques du framework PHP ?

Certains des frameworks de développement PHP les plus populaires tels que Laravel, ThinkPHP, etc. adoptent tous le mode d'entrée unique.

Implémentons une version simple d'un cadre de saisie de fichier unique, y compris la mise en œuvre de l'architecture MVC et du routage d'URL.

Architecture MVC (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)

Le contrôleur est l'interaction entre le modèle et la vue en tant que En tant qu'intermédiaire, la couche Modèle est responsable de la lecture et de l'écriture des données, et la couche Vue est responsable de la sortie du traitement des vues.

Principe de routage d'URL

L'idée de base est que le navigateur fournit le nom de la classe du contrôleur et le nom de la méthode via la chaîne URL, et PHP trouve la classe correspondante et méthode en conséquence.

Pour faciliter les tests, toutes les fonctions sont écrites dans un seul fichier. Dans le framework actuel, chaque classe est un fichier et l'entrée est un fichier.

<?php/**
 * PHP单一文件框架设计简析
 * 1、MVC架构实现
 * 2、URL路由原理
 *///URL路由原理/**
 *  路由作用
 * 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由
 */class App {
    public $c;
    public $a;

    public function run()
    {
        $c = isset($_GET[&#39;c&#39;]) ? $_GET[&#39;c&#39;] : "Index"; //url提供类名字的变量名
        $a = isset($_GET[&#39;a&#39;]) ? $_GET[&#39;a&#39;] : "Index"; //url提供方法名字的变量名

        $c .= "Controller";
        if( class_exists($c) && method_exists($c, $a) ) {
            $o = new $c();  
            $o->$a();  
        }else{  
            echo "error";  
            exit();
        }
    }}//MVC架构/**
 * 模型层
 * 获取应用数据作用
 */class Model {
    //TODO:link db、get data}/**
 * 视图类
 * 编译、缓存及显示模板
 */class View {
    public function render($tpl)
    {
        echo "Hi, ".$tpl; //TODO:具体html模板
    }}/**
 * 控制器
 * 所有功能控制器继承该类
 */class Controller {
    public $view;
    public $model;

    public function __construct()
    {
        $this->view = new View();
        $this->model = new Model();
    }

    public function display($tpl = "")
    {
        echo $this->view->render($tpl);
        exit();
    }}//具体功能开发class IndexController extends Controller {
    /**
     * 网站首页
     */
    public function Index()
    {
        $this->display("Index");
    }
    /**
     * 网站列表
     */
    public function List()
    {
        $this->display("List");
    }}//单一文件入口$app = new App();$app->run();?>

Enregistrez le code ci-dessus sous index.php, puis accédez à

http://localhost/index.php?c=Index&a=Index

http:// localhost/ index.php?c=Index&a=List

Vous pouvez voir que différents contenus sont affichés après notre routage !

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