단일 파일 입력 애플리케이션에서는 모든 요청이 index.php를 통해 수신되어 함수 코드로 전달되므로 데이터 보안 확인, 액세스 통계 등과 같은 일부 작업이 훨씬 간단해집니다.
Laravel, ThinkPHP 등과 같이 널리 사용되는 일부 PHP 개발 프레임워크는 모두 단일 입력 모드를 채택합니다.
MVC 아키텍처 및 URL 라우팅 구현을 포함하여 단일 파일 입력 프레임워크의 간단한 버전을 구현해 보겠습니다.
MVC 아키텍처 (추천 학습: PHP 프로그래밍 입문부터 숙련까지)
컨트롤러 컨트롤러는 모델과 뷰 사이의 중개자입니다. 모델 모델 계층은 데이터를 읽고 쓰는 역할을 담당하며 뷰 뷰 계층은 다음과 같습니다. 뷰 처리 출력을 담당합니다.
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['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();?>
위 코드를 index.php로 저장한 후
http://localhost/index.php?c=Index&a=Index
http://localhost/index.php?c=Index&a=List
를 찾아보세요. 네, 라우팅을 거친 후 다른 콘텐츠가 출력되는 것을 확인하세요!
위 내용은 PHP 프레임워크의 단일 입구는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!