composer是什么?
composer是php的包管理器,很多语言都有包管理器,可以很好的引入其他人写的代码,而对自己原有的代码却不产生负面的影响,实现插拔式的开发体验.
composer能干什么?
Packagist是查找PHP组件的社区,Composer则是安装PHP组件的工具.
所以首先composer能方便的安装php组件(库)
例如:
composer require guzzlehttp/guzzle
composer使用浅析
项目安装composer之后,会在根目录生成一个vendor文件夹,composer相关的东西都会在这里面,同时安装的其他组件也都会在这里面,需要注意的是里面有一个autoload.php文件,这个文件必须在你项目的入口文件中引入,这是composer能实现神奇功能的最主要原因,引入这个文件意味着composer可以为你的项目工作了.
//使用composer自动加载器,会按需自动加载引入的组件
require 'vendor/autoload.php';
安装完成后,会在根目录下生成composer.json和composer.lock文件
composer.lock文件中会列出项目使用的所有PHP组件,以及组件的具体版本号,这其实是锁定了项目,让项目只能使用具体版本的PHP组件。这样的好处是,composer会下载这个文件中列出的具体版本,而不管Packagist中可用的最新版本是多少,你应该把composer.lock文件纳入版本控制,这样让团队成员使用的PHP版本和你一样,如果本地开发和服务器使用的PHP组件版本相同,可以尽量降低由组件版本不同导致的bug。
如果确实要下载最新版本的组件并更新composer.lock,可以使用composer update命令。
composer利器,自动加载
以前我们一个文件里面引入另一个php文件的时候都需要用require或者include引入,如果引入很多会让代码非常臃肿,而且可能重复,问题特别多
使用composer之后会自动加载,直接使用就行了,使用use引人命名空间使用就行了.
但是php文件中的namespace还是要自己手动写,而且任何项目中,php文件的文件夹路径和命名空间应该保持一致,这样代码可读性会大大增强,开发效率也会更高.
一般都不要写命名空间的php文件,也就是成为了全局的命名空间,会首先被加载,当做配置文件使用,或者公共方法.这是php 的特性,很多框架都在这里写配置文件,比如thinkphp,有一个config文件夹,里面的文件就都没写命名空间,
thinkphp框架原理浅析
config文件原理
此框架内,会找到config文件夹下面的文件,然后读取里面的内容,获取到配置内容后保存到全局内存中,
比如app.php里面的数组中定义了 ‘aaa’=1,获取的时候要用Config::get(‘配置文件名.配置项键名称’)获取,
这里使用的config是\think\facade\Config
Facade类
facade是一种静态代理机制,可以让原来类的普通方法,使用静态调用,这样写起来就非常方便,不需要先实例化一个Class,而是直接用Class::fucName的方法来调用,thinkphp框架内部很多类都实现了静态代理,简单的说,当使用一个类的时候,如果有facade下面的类名,就用这个,而不是非facade目录下的class,这样能让使用更加简单