centos上安装使用:
curl -sS https://getcomposer.org/installer | php (-- --install-dir=bin)指定安装目录
1.新建一个composer.json文件
{
"require": {
"monolog/monolog": "1.2.*"
}
}
php composer.phar install
composer install
2.自动安装
composer require ""
composer.json 里面是定义的一些依赖
composer.lock 锁文件,在安装依赖后,Composer 将把安装时确切的版本号列表写入 composer.lock 文件。这将锁定改项目的特定版本。
composer.phar 用来执行 php composer.phar install ,如果composer命令加入到path中,也可以通过composer install来安装依赖
vendor 依赖存放的目录
管理依赖
require 'vendor/autoload.php';
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInita8484003a73b0020b426c07d5f5a0c87::getLoader();
<?php
class ComposerAutoloaderInita8484003a73b0020b426c07d5f5a0c87
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
public static function getLoader()
{
//单例
if (null !== self::$loader) {
return self::$loader;
}
//注册自动加载函数,目的就是加载ClassLoader.php
spl_autoload_register(array('ComposerAutoloaderInita8484003a73b0020b426c07d5f5a0c87', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInita8484003a73b0020b426c07d5f5a0c87', 'loadClassLoader'));
//加载HTMLPurifier,Diff,
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);//Registers a set of PSR-0 directories for a given prefix,
}
//autoload_psr4.php里面定义了namespace和目录的键值对,自动加载就是通过这个部分实现的
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);//Registers a set of PSR-4 directories for a given namespace,
}
//autoload_classmap.php里面是空的,主要应该是类名到文件名的映射
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);//Class to filename map
}
//注册这个自动加载函数
$loader->register(true);
$includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequirea8484003a73b0020b426c07d5f5a0c87($fileIdentifier, $file);
}
//这一行可以注释
return $loader;
}
}
function composerRequirea8484003a73b0020b426c07d5f5a0c87($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}
vendor/composer/ClassLoader.php 真正的自动加载函数
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
return true;
}
}