批改状态:合格
老师批语:这类工具, 输出肯定都是英文, 就像是中国人写的组件包, 也是英文描述, 没办法, 国际化
vendorcomposer.json, composer.lockjson格式composer initcomposer.lock,就安装这里面要求的包的版本composer.json中的包,并创建composer.lock,将安装好的包的版本等信息写入到composer.lock中composer.json是否有更新composer.lockcomposer.json,composer.locl,vendor的时候, 会全自动创建composer create-project laravel/laravel blogscomposer.json中的”autoload”中的空间映射生效composer dump使用composer编写框架是 1+2 结构,即:
一个目录'vendor'。两个文件:'composer.json','composer.lock'。

进入https://packagist.org/ 搜索catfan/medoo

执行这段代码进行安装

安装成功

安装成功
composer.json文件中
"autoload": {"psr-4": {//控制器映射 controllers为目录名也是命名空间名 app/controllers为文件夹和目录名"controllers\\": "app/controllers",//模型"models\\": "app/models",//视图"views\\": "app/views",//核心,套壳的文件,下载的模型和视图让它继承,再让真正的视图和模型继承它"core\\": "core"}},
更新文件后一定在命令行更新:Composer dump 进行更新
控制器:
<?php// 命名空间: 包名称namespace controllers;// 控制器里面创建一个类class StaffsController{//模型属性public $model;//视图属性public $view;//模型的 构造方法public function __construct($model, $view){$this->model = $model;$this->view = $view;}// 视图的方法public function display(){//在本控制器文件中加载视图文件include 'app/views/staffs/list.php';}// 查询数据库public function select(){//这里调用$this->model 会调用到核心文件 核心文件填写数据库的信息,核心文件继承catfan/medoo 使用的catfan/medoo里面的数据库方法$staffs = $this->model->select('jizhang',['id','jine','chengyuan','beizhu'],['id[>=]'=>5, 'LIMIT'=>10]);return $this->view->render('staffs/list', ['staffs' => $staffs]);}}
模型代码:
<?phpnamespace models;use core\Model;//继承核心模型 也就是套壳的模型,套壳的模型继承下载的模型和视图方法class StaffsModel extends Model{public function __construct(){parent::__construct();}}
视图代码:
<!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: #f79baf;}</style></head><body><h3>消费明细表</h3><table><tr><th>id</th><th>金额</th><th>成员</th><th>备注</th><th>管理</th></tr><?php foreach ($staffs as $staff): ?><tr><td><?= $this->e($staff['id']) ?></td><td><?= $this->e($staff['jine']) ?></td><td><?= $this->e($staff['chengyuan']) ?></td><td><?= $this->e($staff['beizhu']) ?></td><td><button>编辑</button><button>删除</button></td></tr><?php endforeach ?></table></body></html>
模型
<?phpnamespace core;use Medoo\Medoo;// 公共模型 核心,套壳的文件,下载的模型和视图让它继承,再让真正的视图和模型继承它class Model extends Medoo{//构造方法 这里的方法参考catfan/medoo官方public function __construct(){$options = ['database_type' => 'mysql','database_name' => 'php','server' => 'localhost','username' => 'root','password' => '123456',];parent::__construct($options);}public function init(){}}
视图
<?phpnamespace core;use League\Plates\Engine;// 公共视图 核心,套壳的文件,下载的模型和视图让它继承,再让真正的视图和模型继承它class View extends Engine{private $templates;//传的参数代表模板路径public function __construct($path){$this->templates = parent::__construct($path);}}
首页代码 index.php
<?php//自动文件加载器require 'vendor/autoload.php';use controllers\StaffsController;use models\StaffsModel;use core\View;// 模型处理 得到模型里面内容 模型继承核心 核心继承下载的模型$model = new StaffsModel();// var_dump($model);// echo '<hr>';// 视图 得到视图里面的内容 也就是消费明细表$view = new View('app/views');// var_dump($view);// echo '<hr>';// 查询 new控制器 传参模型和视图$controller = new StaffsController($model, $view);// var_dump($controller);// 直接打印里面的select方法echo $controller->select();
最终效果:
总结:第一次接触框架,感觉跟mvc挺像,里面的关系还是比较乱,从头理下来会清楚一些,就是第三方的组件说明全是英文 用起来感觉会有些吃力
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号