① Composer 自动加载原理
到达 composer 工作区
实现自动加载的过程可简单分为三步:
下面演示 laravel 四种声明加载标准的组件,是如何归纳的。
文件预加载,框架启动时便被 include ,通常文件中提供一些函数方法方便我们使用,如经常用的 dd() 。
"files:["src/Illuminate/Foundation/helpers.php"]" 写入 /composer/autoload_files.php ,
直接映射文件真实路径。 这是简单粗暴的,因此这种方式效率是最高的。
"classmap": ["hamcrest"] , 写入 /composer/autoload_classmap.php
当 use Hamcrest\Arrays\IsArray; 时,可直接在 classmap 的数组中找到它,是不是很粗暴呢。
这是最常用的加载标准。 "psr-4": {"App\": "app/"} 写入 autoload_psr4.php
只要是 app/ 目录下的文件,且名命空间符合 psr-4 标准的类文件都能被自动加载。如 use AppTest => app/Test.php 。而 classmap 方式不可以,这样你可以在 app/ 下自由的增加 / 删除类文件了。
这里提一下,前面说 classmap 方式是最高效的,而 composer mp-autoload 可以将通过 psr-4 规范加载的文件 “落盘”,即写入 autoload_classmap.php 。从而起到加速的作用,官方建议生产环境时执行 composer mp-autoload --optimize 来优化项目的自动加载速度。
为了说明 composer mp-autoload 的作用,我在 app 目录下建立 Test.php
执行 composer mp-autoload 后,发现在 autoload_classmap.php 与 autoload_static.php (稍后再提及)中找到了它。
而 composer mp-autoload --optimize 的作用是进行优化(optimize),清理无效索引空间另外在 /composer 生成了 user 缓存文件。
和 psr-4 类似,只是加载规则有所不同。官方已弃用,但 laravel 有的组建包还是在用的,composer 仍然支持向下兼容。 "psr-0": {"Mockery": "library/"} 写入 autoload_namespaces.php 。
注: autoload_static.php 它包含了四个文件的全部映射,是为了精简篇幅这里不做介绍了
② phpstorm怎么安装composer
方法/步骤
1
网络搜索下载Composer-Setup.exe 安装软件包
2
下载成功!
3
准备安装软件,双击软件就可以安装此软件 默认安装装就可以了,并会自动搜索PHP.exe的安装路径。
4
稍等一会,下载组件
5
显示此页面表示安装完成!如果报错 就检查 PHP扩展的OpenSSL 有没有打开
6
验证是否成功。打开win+R 》 cmd 输入 composer,显示如下界面 表示安装成功!