首頁  >  文章  >  後端開發  >  php框架單一入口有哪些

php框架單一入口有哪些

(*-*)浩
(*-*)浩原創
2019-09-24 10:01:592050瀏覽

單一檔案入口應用,所有請求都是透過index.php接收並轉發到功能程式碼中去,因此有些事情變得簡單多了,如資料安全性檢查,存取統計等。

php框架單一入口有哪些

目前比較流行的一些PHP開發框架如Laravel、ThinkPHP等都是採用的單一入口模式。

下面咱們來實作一個簡單版的單一檔案入口框架,包括MVC架構、URL路由的實作。

MVC架構(推薦學習:PHP程式設計從入門到精通

Controller控制器是Model和View兩者交互的中介,Model模型層負責讀寫數據,View視圖層負責視圖處理輸出。

URL路由原理

基本想法是瀏覽器端透過URL字串提供控制器類別的名字和方法的名字,PHP據此找到對應的類別和方法。

為方便測試,把所有功能寫一個文件,實際框架每個類別為一個文件,入口一個文件。

<?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();?>

以上程式碼儲存為index.php,然後瀏覽

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

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

可看到經過我們的路由後輸出不同內容!

以上是php框架單一入口有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn