批改状态:合格
老师批语:
熟悉composer常用指令,会安装组件,并理解自动加载器的使用方式与更新方法
namespace mvc_demo;use PDO;// 模型类class Model{// 获取数据public function getData(){$pdo = new PDO('mysql:host=localhost;dbname=phpedu;charset=utf8mb4', 'root', 'root', array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));$sql = "SELECT id, name, gender FROM staffs limit 5";return $pdo->query($sql);}}
namespace mvc_demo;// 视图类class View{// 数据展示public function fetch($datas){$res = '';foreach ($datas as $data) {$res .= print_r($data, true) . '<br>';}return $res;}}
namespace mvc_demo;use Closure;// 加载模型require 'model.php';// 加载视图require 'view.php';// 服务容器class Container{// 对象容器protected $instances = [];// 添加容器public function bind($alias, Closure $process){$this->instances[$alias] = $process;}// 取出对象public function make($alias, $params = []){return call_user_func_array($this->instances[$alias], $params);}}// 门面类,普通方法静态化class Facade{// 容器属性protected static $container = null;// 容器静态方法public static function initilize(Container $container){static::$container = $container;}}// 模型类访问静态化class StaffsModel extends Facade{public static function getData(){return static::$container->make('model')->getData();}}// 视图类访问静态化class StaffsView extends Facade{public static function fetch($datas){return static::$container->make('view')->fetch($datas);}}// 控制器,工作类class Controller{public function __construct(Container $container){Facade::initilize($container);}public function index(){// 获取数据$datas = StaffsModel::getData();// 渲染数据return StaffsView::fetch($datas);}}// 依赖的对象添加到容器中$container = new Container();$container->bind('model', function () {return new Model();});$container->bind('view', function () {return new View();});// 实例化控制器,显示数据$controller = new Controller($container);echo $controller->index();
| 命令 | 描述 |
|---|---|
| composer init | 交互创建composer.json |
| composer selfupdate | composer更新到最新 |
| composer install | 安装 composer.json 中 require 声明的依赖包,文件内容可以是 {} |
| composer require | 安装包写入 composer.json 的 require 中 |
| composer create-project | 创建项目 |
| composer update | 忽略锁文件 composer.lock 更新 composer.json 中的依赖包 |
| composer search | 搜索包( https://packagist.org ) |
| composer config | 配置 composer (镜像源) |
| composer dump | 更新 composer.json 中 autoload 配置项 |
| composer help update | 命令帮助 |
| composer list | 命令列表 |
| composer -V | 查看版本号 |
下载 getcomposer.org/composer.phar 移至 php.exe 所在目录
同目录下创建批处理 composer.bat 添加内容 @php "%~dp0composer.phar" %* 保存
将 php.exe 所在目录添加到系统环境变量中
配置案例云镜像源,打开 cmd 输入命令 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
vscode 中,0303 目录创建 composer.json 内容为 {},打开终端,进入 0303 目录,输入 composer -install

composer search captcha 搜索验证码组件,执行 composer require gregwar/captcha 安装组件
require 'model.php' 和 require 'view.php' 注释,引入 vendor 自动加载文件require dirname(__DIR__) .'/vendor/autoload.php'
"autoload": {"classmap": ["mvc"]},
"psr-4": {"mvc_demo\\": "mvc"}
composer dump

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号