1、实现简单的MVC原理
目录结构:
通过在index.php中对路由进行解析,调用控制器的的类和方法来实现视图和模型的数据交换。
超全局变量$_SERVER是一个包含了头信息(header)、路径(path)以及脚本位置(script_location)等等信息的数组,可以通过$_SERVER['REQUEST_URI]来获取当前页面的路由信息。根据路由提供的信息我们可以获得需要调用的脚本信息,最后使用脚本中的类中的某些方法来实现视图和模型之间的数据交换。
index.php代码:
<?php $uri = $_SERVER["REQUEST_URI"]; //获取路由 $path_info = $_SERVER['PATH_INFO']; //用来获取脚本名称之后,查询语句之间的路径信息 $path = ltrim($path_info,'/'); //将$path_info字符串左边的'/'符号去掉 //解析控制器和方法; $controller_method = explode('/',$path); //将$path拆分为数组 $controller= ucfirst($controller_method[0]); //获取控制器名称 $class = $controller_method[1]; //获取类名 $method = $controller_method[2]; //获取方法 require __DIR__.'/controller/'.$controller.'.php'; echo $class::$method();
Controller.php代码:
<?php class control{ public static function view() { require __DIR__ . '/../model/db.php'; require __DIR__ . '/../view/home.php'; } }
db.php代码:
<?php class db { protected $pdo=null; public function __construct($dsn,$username,$pwd) { $this->pdo=new PDO($dsn,$username,$pwd); } public function __get($name){ return $this->$name; } } $dsn='mysql:host=127.0.0.1;dbname=video'; $username = 'root'; $pwd = 'root'; $db = new db($dsn,$username,$pwd); $pdo = $db->pdo; $sql = 'SELECT * FROM staff'; $stmt = $pdo->prepare($sql); $stmt->execute(); $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
home.php代码:
<?php echo '<pre>'.print_r($results,true);
运行结果: