项目开发过程中,拓展包的引入能够帮助我们快速且强大的开发我们的项目,js中的node install ,golang中的go mod而 php 我们用的就是composer,像这样 composer require lingyuyizhipao/http
当然你也可以用原声自己慢慢造轮子,但引入可以帮助更好更快的做更多的事情,那么composer是如何帮助我们的呢,下面来好好分析分析。
其实我们的初衷是我们需要使用的对象能够给我们使用就行了,但是计算机肯定是要code加载到内存中去运行才行的啊,那就意味着每使用一个对象之前php就得require_once该对象的class文件到内存中,麻烦!spl_autoload_register 这个函数就是php专门用来解决这个问题的,它可以帮我注册一个我们自定义的函数,每当我们new一个内存中找不到的对象的时候,就会去调用我们自定义的函数,而且会把这个函数名称传到自定义函数,那么就有游戏的空间了,围绕这出现了很多标准,比如autoload_psr4,autoload_classmap,autoload_namespaces,autoload_static(这些是我在 laravel 自动加载中复制出来的),有对标准感兴趣的可自行百度,总之composer就是利用自动加载函数和自动加载标准规则让我们的 工具 类很轻松容易被引用并使用的。
composer require lingyuyizhipao/http 或者你随便composer安装一个拓展吧,你的项目根目录下就会出来
composer.json,composer.lock以及vendor文件夹,composer.json是定义composer依赖的一种标准,可自行百度每一项属性的含义,在vendor这个文件夹下有个composer文件夹,里面就是composer工作中所需要的必要文件了,每当我们composer install ,composer require , composer update, composer dump-autoload 等等等,其实就是更新里面的几个规范文件,每一个规范都对应自身的一个映射规则,你点击一看便明白要么就是命名空间映射文件路径,要么就是会自动再加点什么后缀的路径。
那么我们再来理一下啊,compsoer的各种作用命令为好好的维护好vendor/composer下的文件,里面就是一堆字符串到类文件路径的关联映射,就保证了我们的代码一种能力,当我们new一个内存中不存在的对象的时候,自动加载函数根据我们new的对象的类的名称,去composer维护的那么些文件规则中走一趟,发现了就引入,从而保证new对象的正常进行,这才是工作的真正原理,所有的规范都只为更好的被使用,但其深处的原理却只有一个,那就是必须得映射到存在的class类文件才行,因为php只认一个,new的这个对象的类文件必须存在于内存中,就此打住。
自己写一个composer包发布到composer服务器上走一遍流程。
以上所述就是小编给大家介绍的《php-composer作用分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 堆栈内存的分析以及作用域的详解
- Kafka 源码系列之源码分析 ZooKeeper 在 Kafka 的作用
- 图解词法作用域与作用域链
- javascript作用域之块级作用域
- javascript静态作用域和动态作用域
- JavaScript系列之作用域和作用域链
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。