先唠叨唠叨一些琐碎的事。本人最早从事.Net开发,后来处于好奇慢慢转到了php,因为.net从一早就使用了命名空间(反正从我使用就存在这玩意了),所以在转php时很自然的就使用了命名空间,但是在使用过程,发现php的use和.net中的using完全不是一个概念。
一、学习composer前的历程
1、在.net中,若调用某个类,直接using 命名空间.类名即可;而php中虽然有命名空间这玩意,你也可以use 引入命名空间,但若想调用某个类,则必须require或include。说实话,刚开始觉得特别特别的别扭,差点让我对php失去好奇。
2、随着学习的深入,发现了php中的__autoload(),这个函数能实现类的自动加载,即在初始化类时,若未找到该类文件,则调用__autoload()方法,这样我们就能很轻松的在__autoload()方法中使用require或者include了;后来又发现了一个spl_autoload_register,这个函数其实就是注册__autoload()方法,当然你也可以注册自定义的方法,而且可以注册多个。
3、后来在使用laravel框架时,发现该框架是使用Composer来管理依赖以及自动加载的,于是就学习了下Composer。
二、composer安装。
1、下载、安装composer,在终端执行:curl -sS https://getcomposer.org/installer | php 。命令执行完毕后,会在当前目录下下载一个composer.phar
2、检查composer是否能正常工作,在终端执行:php composer.phar。
3、设置全局命令,在终端执行:mv composer.phar /usr/local/bin/composer
4、查看composer版本:composer -V
以上四步则完成了composer安装。
三、如何使用composer来管理依赖呢?假设我们要创建一个demo的项目,在demo文件夹下创建composer.json文件,在composer.json中定义项目的依赖。
1、假设你的项目需要依赖三方monolog,则在composer.json中写:
{ "require":
{
"monolog/monolog": "1.2.*"
}
}
2、下载依赖到你的本地项目:composer install。将会创建 vendor/monolog/monolog
目录并下载三方组件。扩展:install 将会创建一个composer.lock文件,该文件会于composer.json同一目录层级(即根目录下)。在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock
文件,锁定该项目需要依赖组件的版本,这样能保证所有开发人员能使用一致的组件。当然要是你想更新组件的版本,则可以使用:composer update;若只想更新某个组件,则可以使用:composer update monolog/monolog
四、composer自动加载。
1、若要实现项目中的类自动加载,很简单,只要在项目入口文件中率先引入autoload.php文件即可:require 'vendor/autoload.php';
2、你可以在 composer.json
的 autoload
字段中增加自己的 autoloader(定义要加载的命名空间与具体路径的键值对)。
"autoload": {
"psr-4": {"App\\": "app/"}
}
添加完毕以后,需要再次执行:composer install,自定义的autoloader才生效。
此时,我们可以在项目创建app文件夹,假设我们还创建A类、B类,两个的命名空间我们设定为App。我们要在A类中调用B类,只需要在A类中use App\B 即可
到此,Composer的基础应用算告一段落,若还有补充则会另开一篇。