博主信息
博文 70
粉丝 1
评论 0
访问量 68785
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
Facade门面类-composer常用指令-自动加载器使用
葡萄枝子
原创
877人浏览过

Facade门面类-composer常用指令-自动加载器使用

熟悉composer常用指令,会安装组件,并理解自动加载器的使用方式与更新方法

1. 新建 0303 目录,子目录 mvc 创建文件 model.php, view.php, controller.php

  • model.php 模型类,获取数据
  1. namespace mvc_demo;
  2. use PDO;
  3. // 模型类
  4. class Model
  5. {
  6. // 获取数据
  7. public function getData()
  8. {
  9. $pdo = new PDO('mysql:host=localhost;dbname=phpedu;charset=utf8mb4', 'root', 'root', array(
  10. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
  11. ));
  12. $sql = "SELECT id, name, gender FROM staffs limit 5";
  13. return $pdo->query($sql);
  14. }
  15. }
  • view.php 视图类,展示数据
  1. namespace mvc_demo;
  2. // 视图类
  3. class View
  4. {
  5. // 数据展示
  6. public function fetch($datas)
  7. {
  8. $res = '';
  9. foreach ($datas as $data) {
  10. $res .= print_r($data, true) . '<br>';
  11. }
  12. return $res;
  13. }
  14. }
  • controller.php 控制器,渲染数据
  1. namespace mvc_demo;
  2. use Closure;
  3. // 加载模型
  4. require 'model.php';
  5. // 加载视图
  6. require 'view.php';
  7. // 服务容器
  8. class Container
  9. {
  10. // 对象容器
  11. protected $instances = [];
  12. // 添加容器
  13. public function bind($alias, Closure $process)
  14. {
  15. $this->instances[$alias] = $process;
  16. }
  17. // 取出对象
  18. public function make($alias, $params = [])
  19. {
  20. return call_user_func_array($this->instances[$alias], $params);
  21. }
  22. }
  23. // 门面类,普通方法静态化
  24. class Facade
  25. {
  26. // 容器属性
  27. protected static $container = null;
  28. // 容器静态方法
  29. public static function initilize(Container $container)
  30. {
  31. static::$container = $container;
  32. }
  33. }
  34. // 模型类访问静态化
  35. class StaffsModel extends Facade
  36. {
  37. public static function getData()
  38. {
  39. return static::$container->make('model')->getData();
  40. }
  41. }
  42. // 视图类访问静态化
  43. class StaffsView extends Facade
  44. {
  45. public static function fetch($datas)
  46. {
  47. return static::$container->make('view')->fetch($datas);
  48. }
  49. }
  50. // 控制器,工作类
  51. class Controller
  52. {
  53. public function __construct(Container $container)
  54. {
  55. Facade::initilize($container);
  56. }
  57. public function index()
  58. {
  59. // 获取数据
  60. $datas = StaffsModel::getData();
  61. // 渲染数据
  62. return StaffsView::fetch($datas);
  63. }
  64. }
  65. // 依赖的对象添加到容器中
  66. $container = new Container();
  67. $container->bind('model', function () {
  68. return new Model();
  69. });
  70. $container->bind('view', function () {
  71. return new View();
  72. });
  73. // 实例化控制器,显示数据
  74. $controller = new Controller($container);
  75. echo $controller->index();

2. 熟悉composer常用指令,会安装组件,并理解自动加载器的使用方式与更新方法

2.1 composer常用指令

命令 描述
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 查看版本号

2.2 安装组件,理解自动加载器的使用与更新

  • 下载 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

获取vendor

  • 安装组件 composer search captcha 搜索验证码组件,执行 composer require gregwar/captcha 安装组件

验证码组件

  • 自动加载,将 controller.php 的 Container 类中 require 'model.php'require 'view.php' 注释,引入 vendor 自动加载文件
    require dirname(__DIR__) .'/vendor/autoload.php'

自动加载

  • 修改 composer.json 内添加,类名映射到目录
  1. "autoload": {
  2. "classmap": ["mvc"]
  3. },
  • 或者改为 psr-4 标准,空间名映射到目录
  1. "psr-4": {
  2. "mvc_demo\\": "mvc"
  3. }
  • 自动加载更新,终端运行 composer dump

composer

  • 运行 mvc 目录下的 controller.php 已实现自动加载

自动加载

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学