composer 与php autoload,命名空间

composer 是一个依赖管理软件,简单点说就是按照指定规则给你下载对应的依赖包;
composer 是第三软件 跟php 没有关系 需要独立安装;
composer 需要在对应文件夹配置composer.json 配置文件 没有配置直接执行 composer require phpoffice/phpexcel 命令会 自动帮你生成配置文件 并且对应配置好信息;
composer 下载完依赖会直接创建一个vendor 文件夹 里面有 autoload.php 自动加载文件以及其他规范的自动加载规则;

php自动加载
就是当在php 中实例化类找不到时,php 会去调用已经注册的自动加载方法,在方法里面实现类的引入
实现方式下面的方法,当在这里实例化类找不到会自动调用此方法
1:在当前文件实现 _aotuload($classname){
}

2:通过 spl_aotuload_register ($funtion) 方法注册自动加载回调函数,当出现类找不到 php 会从所有注册过的方法中顺序回调对应的方法直到找到对应类引入;

Q:自动加载如何区分同名类的路径?
A:通过命名空间,在实例化类时必须通过命名空间指定实例化那个类,然后根据命名空间去找对应的类(命名空间跟文件路径不是一致的,这里的对应关系是项目自行维护,一般情况下同一个依赖库内部相当位置是确定的);

命名空间
通过指定文件的别名区分项目中重复的类名

使用:在php 文件最开始 用 namespace xxx/xxxx 定义 主要作用是通过命名空间区分文件位置,或者说在项目中的相当位置

命名空间可以随意定义,不一定要跟文件路径吻合,但是在文件中相同命名空间只能有一个同名类,否则会报错

实例化类时 可以通过在类文件头部使用 use xxx/xxx/class 这样指定使用对应的类,注意这里 并不会自动引入对应的类,引入需要通过自动加载实现
不使用 use 关键字 也可以直接实例化是 通过 new /xxx/xxx/clsss();这样指定命名空间的实例化方式创建类,注意区分 new /xxx/classnew xxx/class (指当前文件命名空间/xxx/class)

总结: use 是使用命名空间的 关键字,这样做是在相同文件下实例化相同命名空间的类 可以少写命名空间 use 不直接引入文件,引入需要依赖自动加载机制;
命名空间是为了自动加载时区分对应的类的文件位置,如果都用 require_once 则不需要命名空间,命名空间最终目的就是在require 文件时能找准文件

自动加载 是通过回调注册方法 的方式实现,php 会一次轮询已经注册的回调方法,直到找到对应类文件,否则返回 class not fond
composer 下载的类库会使用规范的自动加载机制,使用composer 的类库只要引入 vender 文件的 autoload.php 则会实现自动加载,使用的时候要通过use 对应命名空间指定对应的类

ps:修改composer仓库为阿里云
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

composer 与php autoload,命名空间相关推荐

  1. 动手开发自己的第一个 composer 包

    原文:http://blog.jayxhj.com/2016/05/basic-composer-package-development/ composer 是 PHP 的依赖管理工具,本篇文章就来说 ...

  2. 如何创建自己的composer包

    composer中文网 :https://www.phpcomposer.com/ 一.前期准备: composer 安装 Windows安装: 1.下载安装包,https://getcomposer ...

  3. Composer基础应用1

    先唠叨唠叨一些琐碎的事.本人最早从事.Net开发,后来处于好奇慢慢转到了php,因为.net从一早就使用了命名空间(反正从我使用就存在这玩意了),所以在转php时很自然的就使用了命名空间,但是在使用过 ...

  4. PHP使用composer《MordenPHP》

    PHP使用composer 来自<MordenPHP > 注释 首先要明白这个概念,但不用深究. 建议多用命令, 比该配置方便太多了.Composer是PHP的一个依赖管理工具, 不单单是 ...

  5. Composer入门教程 - 基本用法

    Composer入门教程 - 基本用法 基本用法 安装 composer.json:项目安装 关于 require Key 包名称 包版本 下一个重要版本(波浪号运算符) 稳定性 安装依赖包 comp ...

  6. Composer 基本使用方法

     简介: 本文主要为大家介绍 Composer 的基本使用方法,包括基本介绍.安装.更新与使用等. 镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 引言 本文主要介绍基本用法,我们将安装 mo ...

  7. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

  8. Slim研读笔记四之Composer(下)

    "Composer是现代php项目的基石,作为一个有梦想的PHPer,不懂可不行哦" --海盗.娜美 这节是Composer源码分析系列的第二节,我们继续延续上节未完成的工作.上节 ...

  9. laravel 是怎么做到运行 composer dump-autoload 不清空 classmap 映射关系的呢?

    我看 laravel 的 composer.json 文件 autoload 也没配置 vendor/autoload_classmap.php 里的映射关系,正常来说,如果没有配置,执行 compo ...

  10. Composer的简单安装与使用

    1. 全局安装 curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 2. ...

最新文章

  1. React学习笔记二——react-router
  2. Android Studio查找或设置函数注释的快捷键
  3. python中loop函数运用_使用涉及函数的Python在for循环中填充DataFrame
  4. VC++ 判断点是否在线段上
  5. MongoDB实战指南(二):索引与查询优化
  6. mysql deadlock6_mysql deadlock、Lock wait timeout解决和分析
  7. Android编译32/64位so or bin(Android.bp or Android.mk)
  8. Flutter: MobX和flutter_mobx状态管理器
  9. 牛逼!只需 3 步,Java 也能做图片识别!
  10. android studio for android learning (二十八) android基础知识
  11. eclipse svn插件离线安装
  12. 凯恩帝数控系统面板介绍_凯恩帝数控车床操作面板按钮详解!
  13. ubuntu 下使用unixbench 这种benchmark 工具测试系统性能
  14. 详解opencv的HOG描述子维度数目的计算原理
  15. 基于stm32的数控恒压恒流电源设计方案
  16. SVG公众号排版 | 快速解决视频号美化出现“点赞信息”
  17. openlayers地图坐标转换为屏幕像素坐标,屏幕像素坐标转成地图实际坐标
  18. 主动触控笔_如何自定义表面笔触控笔
  19. python:输入一个整数正序各个输出,并判断输出位数
  20. FPGA数字信号处理(九)Vivado FFT IP核实现

热门文章

  1. HTML——<blockquote>与<q>的区别
  2. i18n 支持参数的写法
  3. 华三路由器双向NAT
  4. VBA字符处理 特殊符号
  5. UVa12235: Help Bubu 题解
  6. 统计|如何观测两变量之间的相关系数及含义
  7. 易语言服务器客户端网络验证,超强网络验证系统附远程服务支持库
  8. RESTFul API
  9. 性能测试performance test
  10. Groovy - Groovy ambiguous method overload