博主信息
博文 45
粉丝 0
评论 0
访问量 46945
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php facade与composer的使用
咸鱼老爷
原创
874人浏览过

facade

在服务容器与工作类之间添加一个中间层,门面

  1. namespace mvc;
  2. use Closure;
  3. // 加载模型和视图
  4. require 'model.php';
  5. require 'view.php';
  6. // 服务容器
  7. class Container1{
  8. //对象容器
  9. protected $instances=[];
  10. // 添加对象
  11. public function bind($alias,Closure $process){
  12. $this->instances[$alias]=$process;
  13. }
  14. // 取出对象
  15. public function make($alias,$params=[]){
  16. return call_user_func_array($this->instances[$alias],[]);
  17. }
  18. }
  19. // 将依赖的外部对象添加到容器中
  20. $container=new Container1();
  21. $container->bind('model',function(){return new Model();});
  22. $container->bind('view',function(){return new View();});
  23. //--------------------
  24. // 在服务容器与工作类之间添加一个中间层,门面
  25. class Facade{
  26. protected static $container =null;
  27. //初始化
  28. public static function initialize(Container1 $container){
  29. static::$container=$container;
  30. }
  31. }
  32. class UsersModel extends Facade{
  33. public static function getData(){
  34. return static::$container->make('model')->getData();
  35. }
  36. }
  37. class UsersView extends Facade{
  38. public static function fetch($data){
  39. return static::$container->make('view')->fetch($data);
  40. }
  41. }
  42. //--------------------
  43. class Controller5
  44. {
  45. //构造器主要是为了facade门面的初始化
  46. public function __construct(Container1 $container)
  47. {
  48. Facade::initialize($container);
  49. }
  50. public function index()
  51. {
  52. $data = UsersModel::getData();
  53. return UsersView::fetch($data);
  54. }
  55. }
  56. // 客户端测试
  57. $controller = new Controller5($container);
  58. echo $controller->index();

调用代码更加简洁,使用方便且减少出错

composer 是什么

  • php 包依赖管理工具
  • 包: 组件,一组相关的类,接口,trait 的结合体
  • 依赖: A -> B -> C -> D
  • composer 就是用 php 语言开发的

组件放在了哪里

下载

常用指令

  • composer install: 安装 composer.josn 中的依赖
  • composer update: 更新依赖
  • composer selfupdate: 更新 composer 版本
  • composer require: 添加依赖到 composer.json 中
  • composer create-project: 安装项目

自动加载 autoload

  • 文件级: “files”, 需要将加载的文件逐个导入
  • 目录级: “classmap”,类目录的映射
  • 空间级: “psr-4”: 命名空间映射到目录
  • 无论是哪一种,最后都要执行一下”composer dump”,更新 composer.json 中的 autoload 配置项
批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学