Eine einzige Dateieingabeanwendung, alle Anfragen werden über index.php empfangen und an den Funktionscode weitergeleitet, wodurch einige Dinge viel einfacher werden, wie z. B. Datensicherheitsprüfungen, Zugriffsstatistiken usw.
Einige der bekannteren PHP-Entwicklungsframeworks wie Laravel, ThinkPHP usw. verwenden alle den Einzeleingabemodus.
Lassen Sie uns eine einfache Version eines Einzeldateieintrags-Frameworks implementieren, einschließlich der Implementierung der MVC-Architektur und des URL-Routings.
MVC-Architektur (Empfohlenes Lernen: PHP-Programmierung vom Einstieg bis zur Kompetenz)
Controller Controller ist die Interaktion zwischen Model und View As Als Vermittler ist die Modellschicht für das Lesen und Schreiben von Daten verantwortlich, und die Ansichtsschicht ist für die Ausgabe der Ansichtsverarbeitung verantwortlich.
URL-Routing-Prinzip
Die Grundidee besteht darin, dass der Browser den Namen der Controller-Klasse und den Methodennamen über die URL-Zeichenfolge bereitstellt und PHP die entsprechende Klasse findet und Methode entsprechend.
Um das Testen zu erleichtern, werden alle Funktionen in eine Datei geschrieben. Im eigentlichen Framework ist jede Klasse eine Datei und der Eintrag ist eine Datei.
<?php/** * PHP单一文件框架设计简析 * 1、MVC架构实现 * 2、URL路由原理 *///URL路由原理/** * 路由作用 * 获取url中的c和a变量,执行c类对应的方法a,实现不同的路由 */class App { public $c; public $a; public function run() { $c = isset($_GET['c']) ? $_GET['c'] : "Index"; //url提供类名字的变量名 $a = isset($_GET['a']) ? $_GET['a'] : "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();?>
Speichern Sie den obigen Code als index.php und navigieren Sie dann zu
http://localhost/index.php?c=Index&a=Index
http:// localhost/ index.php?c=Index&a=List
Sie können sehen, dass nach unserem Routing unterschiedliche Inhalte ausgegeben werden!
Das obige ist der detaillierte Inhalt vonWas sind die einzelnen Zugänge zum PHP-Framework?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!