PHP的学习

2,PHP依赖管理:composer

2017-02-21  本文已影响66人  陈钢镚学财

作为一个年轻的开发者,熟练使用一些提高开发效率的工具是必须的。
composer是PHP的依赖管理工具,用于管理PHP的Libraries和packages。
它将优秀的php轮子统一管理在 packagist.org

packagist并不管理代码,简单地说,他就像一张表,一方面为composer提供了依赖名称,另一方面又映射到了github的某一个仓库

composer的用处


刚去了解composer的时候,光从字面上理解所谓的依赖管理,的确有些生硬。
但是,任何一个工具的诞生,背后必然是由时长需求所驱动。
既然如此,只要我们知道,用了composer,能给我们php开发带来怎样的意义,你就已经知道,composer到底是个什么东西了。
那么接下来,我们就从不用composer和用composer两种场景,来说说,composer到底能做什么。

这种情况下,项目A或项目B中,从github上找来的轮子,就是项目的依赖。通常,你都是手动的管理这些依赖,这会耗费你大量的精力,如果项目和轮子很多的话。
正是因为这样手动管理的成本太大,程序员又多是聪明绝顶之辈,composer(php的依赖管理工具)就应运而生了。

  1. 新建一个composer.json文件,写好所有依赖
  2. 运行composer install
  3. 坐等完成
  4. require 'vendor/autoload.php';
  5. 接着就能直接用了

别看步骤好像很多,去体会一下,就知道妙处。

composer使用的核心


这是laravel的composer.json文件,注意到 autoload 的值了吗?这就是composer对你项目自动加载要求的命名空间
{
   "name": "laravel/laravel",
   "description": "The Laravel Framework.",
   "keywords": ["framework", "laravel"],
   "license": "MIT",
   "type": "project",
   "require": {
       "php": ">=5.6.4",
       "laravel/framework": "5.4.*",
       "laravel/tinker": "~1.0"
   },
   "require-dev": {
       "fzaninotto/faker": "~1.4",
       "mockery/mockery": "0.9.*",
       "phpunit/phpunit": "~5.7"
   },
   "autoload": {
       "classmap": [
           "database"
       ],
       "psr-4": {
           "App\\": "app/"
       }
   },
   "autoload-dev": {
       "psr-4": {
           "Tests\\": "tests/"
       }
   },
   "scripts": {
       "post-root-package-install": [
           "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
       ],
       "post-create-project-cmd": [
           "php artisan key:generate"
       ],
       "post-install-cmd": [
           "Illuminate\\Foundation\\ComposerScripts::postInstall",
           "php artisan optimize"
       ],
       "post-update-cmd": [
           "Illuminate\\Foundation\\ComposerScripts::postUpdate",
           "php artisan optimize"
       ]
   },
   "config": {
       "preferred-install": "dist",
       "sort-packages": true
   }
}

图片.png

结语

本文只对composer做了一个入门级的总结,实际上,这已经适用于很多开发场景了。如果需要更深入的学习,可以看一下composer的中文文档

上一篇下一篇

猜你喜欢

热点阅读