批改状态:合格
老师批语:推荐了
<?phpnamespace app\controller;class User{public static function hello(){return __METHOD__;}}
<?phpnamespace blog;class Order{public static function hello(){return __METHOD__. '你好';}}
<?phpnamespace blog;class Goods{public static function hello(){return __METHOD__. '商品';}}
{"autoload": {"psr-4": {"app\\controller\\": "app/controller","blog\\": "lib"}},"require": {"gregwar/captcha": "^1.1"}}
<?phprequire_once __DIR__ . '/vendor/autoload.php';// 注册类别名[可选]use app\controller\User;use blog\Order;use blog\Goods;// 调用类成员echo User::hello();echo '<hr>';// 调用lib/Order::hello()echo Order::hello();echo '<hr>';echo Goods::hello();

<?php// composer自动加载器require_once __DIR__.'/vendor/autoload.php';// 注册类,命名空间use Gregwar\Captcha\CaptchaBuilder;// 创建验证器类实例/对象// 生成一个验证码$captcha = new CaptchaBuilder;$captcha->build()->save('out.jpg');// 获取到验证码$_SESSION['phrase'] = $captcha->getPhrase();// 查看一下验证码:echo '验证码是: ' , $_SESSION['phrase'];?><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><h3>用户登录</h3><div><label for="">邮箱:</label><input type="email" name="" id=""></div><div><label for="">密码:</label><input type="password" name="" id=""></div><div><label for="">验证码:</label><img src="<?php echo $captcha->inline(); ?>" onclick="location.reload()" /></div><div><button>提交</button></div></body></html>


"require": {"gregwar/captcha": "^1.1"}


Model 使用第三方包实现View 使用第三方实现Controller业务逻辑主要是写到控制器中composer require catfan/medoocomposer require league/plates
<?php// 模型类namespace core;use Medoo\Medoo;// 继承第三方包:vendor/catfan/src/Medoo.php,在此查看空间// 创建一个入口文件index.phpclass Model extends Medoo{// 构造方法: 连接数据库public function __construct(){$options = ['database_type' => 'mysql','database_name' => 'phpedu','server' => 'localhost','username' => 'root','password' => 'melinda123'];// 调用父类方法,需要参数是数组,Medoo.php查看parent::__construct($options);}// 自己可以封装一些方法,创建自己的模型方法库// 获取满足条件的集合中的第一条数据public function first(){}}
<?php// 视图类namespace core;use League\Plates\Engine;// 继承第三方包:vendor/league/src/Engine.php,在此查看空间class View extends Engine{public $templates;public function __construct($path){$this->templates = parent::__construct($path);}}
<?phpuse controllers\UsersController;use models\UsersModel;use core\View;require_once __DIR__ . '/vendor/autoload.php';// 测试模型$model =new UsersModel();// var_dump($model);// 测试视图$view = new View('app/views');// var_dump($view);// 测试控制器,传参$controller = new UsersController($model, $view);// var_dump($controller);// echo $controller->index();print_r($controller->select());
<?phpnamespace models;use core\Model;// 用户自定义模型通常与一张数据表对应,继承自定义的Modelclass UsersModel extends Model{public function __construct(){parent::__construct();}}
<?phpnamespace controllers;class UsersController{// 将依赖的外部模型和视图对象,使用依赖注入到构造方法中,使它在控制器中共享public $model = null;public $view = null;//构造方法,初始化public function __construct($model, $view){$this->model = $model;$this->view = $view;}// 用于测试public function index(){return __METHOD__;}public function select(){// 通过模型获取数据$users = $this->model->select('users', ['id', 'name','email'], ['id[>=]'=>5, 'LIMIT'=>5]);// return $users;// 将数据渲染到模板上(模板赋值),返回结果到模板引擎里了return $this->view->render('users/list', ['users'=> $users]);}}
{"require": {"catfan/medoo": "^1.7","league/plates": "^3.3"},"autoload": {"psr-4": {"models\\": "app/models","views\\": "app/views","controllers\\": "app/controllers","core\\": "core"}}}

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>用户信息</title><style>body {display: flex;flex-direction: column;align-items: center;}table {border-collapse: collapse;border: 1px solid;width: 50%;text-align: center;}th,td {border: 1px solid;padding: 5px;}tr:first-child {background-color: #eee;}</style></head><body><h3>用户管理系统</h3><table><tr><th>id</th><th>姓名</th><th>邮箱</th><th>操作</th></tr><!-- 数据渲染 --><?php foreach ($users as $user): ?><tr><td><?=$this->e($user['id'])?></td><td><?=$this->e($user['name'])?></td><td><?=$this->e($user['email'])?></td><td><button>编辑</button><button>删除</button></td></tr><?php endforeach ?></table><p><a href="">1</a><a href="">2</a><a href="">3</a><a href="">4</a><a href="">5</a><a href="">6</a></p></body></html>
大体文档结构如下:
总结:
coreModel和View分别继承第三方的包model, view, controllercomposer.json 中类的自动映射关系,用autoload,psr-4规则composer 自动加载器进行测试:测试模型,测试视图,测试控制器
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号