欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP原生实现简易的MVC框架

程序员文章站 2023-08-30 15:43:55
目录结构: —|controller —|Home.php —|model —|view —|welcome.php —|index.php 基本原理: 首页 index.php 通过获得地址栏中的路由名称获得对应控制器以及控制的方法名,通过require引入到index.php首页中。通过引入的对 ......

目录结构:

—|controller

—|home.php

—|model

—|view

—|welcome.php

—|index.php

基本原理:

首页 index.php 通过获得地址栏中的路由名称获得对应控制器以及控制的方法名,通过require引入到index.php首页中。通过引入的对应控制器的类实例化一个对象,对象调用路由地址映射的方法,实现对视图层的调用显示。

实现具体代码:

  1. /index.php 首页代码实现:

<?php

# 获取当前的服务地址
$server = $_server;

#获取到当前访问的主机名之后的uri
$path = $server['request_uri'];  # /test/index.php/home/welcome

$path = ltrim($path, '/'); # 去掉获得的路径前的 /
$controller_method = explode('/', $path); # 根据 / 获得分割数组来取得控制器名字和对应方法
$controller = ucfirst($controller_method[2]); # 将控制器名字的第一个更换为大写
$method = $controller_method[3]; # 对应的方法名
require_once __dir__.'/controller/'.$controller.'.php'; # 定位到当前使用的控制器

$obj = new $controller(); //实例化控制器对象

$obj->$method(); //控制器对象调用目标方法

exit($obj);
  1. /controller/home.php 控制器代码实现:

<?php
class home{

   public function index(){
       echo 'hello mvc';
  }

   public function welcome(){
       require_once __dir__.'/../view/welcome.php';
  }
}
  1. /view/welcome.php 视图层代码实现:

<!doctype html>
<html>
<head>
   <title>welcome</title>
</head>
<body>
<div style="font-size: 18px;text-align: center;color: red;">welcome to hefei</div>
<?php echo date('y-m-d h:i:s')?>
</body>
</html>

结束语:

基本上大部分框架都是基于mvc架构实现的,懂得基本的mvc框架设计的原理,有助于我们学习框架,以及对良好的框架的应用更加得心应手,并能很好地理解其中的设计思想,慢慢演化成为一个有想法的coder。