批改状态:合格
老师批语:
<?phpnamespace phpcn;// 框架的入口文件//1.加载配置项require __DIR__ . '/config.php';//2.加载框架核心类库require __DIR__ . '/core/Controller.php';require __DIR__ . '/core/Model.php';require __DIR__ . '/core/View.php';//3.加载自定义模型require __DIR__ . '/model/StaffModel.php';//4.实例化模型类//extract() :解构,将一个关联数组结构为一个个独立变量extract(DATABASE);//查看解构变量是否成功// echo $type;$dsn = sprintf('%s:dbname=%s',$type,$dbname);$model = new StaffMdel($dsn,$username,$password);//https://php.edu/0506/mvc3/index.php?c=controller&a=action//c = 控制器 a = action$c = $_GET['c'] ?? APP['default_controller'];$a = $_GET['a'] ?? APP['default_action'];//获取类名$class = ucfirst($c) . 'Controller';//加载自定义类require __DIR__ . '/controller/'. $class . '.php';//5.加载视图类$view = new View();//6.实例化控制器类$fullclass = __NAMESPACE__ . '\\' . $class;$controller = new $fullclass($model, $view);//执行控制器中index()方法echo $controller->$a();
<?php//连接数据库参数define('DATABASE',['type'=>'mysql','host'=>'localhost','dbname'=>'phpedu','port'=>'3306','charset'=>'utf8','username'=>'root','password'=>'phpedu']);//应用相关define('APP',[//默认控制器'default_controller'=>'index',//默认方法'default_action'=>'index']);//根路径define('ROOT_PATH',__DIR__);
<?phpnamespace phpcn;class Controller{// 模型对象protected $model;// 视图对象protected $view;// 控制器类实例时,要确保模型和视图对象可用public function __construct($model, $view){$this->model = $model;$this->view = $view;}public function index(){// 1. 模型: 获取数据$data = $this->model->getAll(10);// 2. 视图: 渲染模板$this->view->display($data);}}
<?phpnamespace phpcn;use PDO;class Model{// 连接对象protected $db;// 模型实例化时,应该将数据库连接上,为后面的操作做好准备public function __construct($dsn, $username, $password){$this->db = new PDO($dsn, $username, $password);}// 通常模型类中,会预置一些公共方法,供用户进行数据库操作// 获取分页数据(多条)public function getAll($n = 10){$stmt = $this->db->prepare('SELECT * FROM `staff` LIMIT ?');// 默认绑定的都是字符串类型$stmt->bindParam(1, $n, PDO::PARAM_INT);$stmt->execute();// print_r($stmt->debugDumpParams());return $stmt->fetchAll();}}// 测试语句// print_r((new Model('mysql:dbname=phpedu', 'root', 'root'))->getAll());
<?phpnamespace phpcn;class View{public function display($data){// 1. 模型赋值$staffs = $data;// 2. 渲染模型include ROOT_PATH . '/view/show.php';}}
<?phpnamespace phpcn;class StaffMdel extends Model{//复用核心}
例如:http://php.edu/0506/mvc3/index.php?c=admin&a=index
<?phpnamespace phpcn;class AdminController extends Controller{public function index(){return '这里是后台';}}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号