PHP Composer详解

PHP composer

php composer的作用

php composer相当于PHP 包管理器,可以很方便的解决php包之间的依赖关系,与python的pip类似。
php composer 一个重要功能是实现类的自动加载。

composer是如何实现类的自动加载

1. 实现自动加载机制需要在php文件中添加 require "vender/autoload.php"
2. autoload.php 指向 'autoload_real.php'文件,'autoload_real'文件中$map数组引入几个自动
加载核心配置文件 'autoload_namespaces.php','autoload_psr4.php',
    'autoload_namespaces.php'文件中指定命名空间与目录之间的映射关系。
PHP Composer详解_第1张图片
autoload_namespaces.php.png
    'autoload_psr4.php'中指定符合psr-4标准的命名空间与目录之间的关系。
PHP Composer详解_第2张图片
autoload_psr4.php.png

composer的使用

下载:https://getcomposer.org/download/
编写composer.json文件,在命令行行中执行composer install就可以直接安装PHP包。

composer的常用命令

composer install    <安装composer.json文件中指定的PHP包>
comopser update   <根据composer.json文件进行更新>
composer search + php包    <搜索某个PHP包>
composer show + php包    <显示指定PHP包的版本等信息>
composer require + php包    <直接安装指定的PHP包>

使用composer创建一个项目

命令: composer create-project php包 + 目录名 + 版本号
例如: composer create-project laravel/laravel Laravel-5.2 5.2.0

参考资料

composer官网: 
composer 中文官网: 
composer 包地址: 

PHP引入外部类的一个实例(php引入外部类的几种方法)

name = $name;
    }

}


class Staff{

    protected $members = [];

    public function add(Person $person)
    {
        $this->members[] = $person;
    }
}

class Business{

    protected $staff;

    public function __construct(Staff $staff)
    {
        $this->staff = $staff;
    }


    public function hire(Person $person)
    {
        $this->staff->add($person);
    }
}

$zhenxin = new Person('zhenxin');
$staff  = new Staff();
$business = new Business($staff);
$business->hire($zhenxin);
var_dump($staff);
*/


/*
 * 2. php oop编程思想是将每个不同的类放在不同的文件中。
 *      将所有外部类通过require关键词引入。
 * 
 * */

/*
require 'src/Business.php';
require 'src/Person.php';
require 'src/Staff.php';


$zhenxin = new Person('zhenxin');
$staff  = new Staff();
$business = new Business($staff);
$business->hire($zhenxin);
var_dump($staff);
*/


/*
 * 3. 使用composer的自动加载方式来加载外部的类
 *
 *      首先在composer.json文件定义外部类的命名空间,本例中为
{
  "autoload": {
    "psr-4": {
      "Laravist\\":"src/"
    }
  }
}

 *      然后在命令行中执行 composer down-autoload, 生成vendor目录,
 *      引入vendor目录的autoload.php就可以实现composer的自动加载机制
 * 
 * */

/*
require "vendor\autoload.php";

$zhenxin = new Laravist\Person('zhenxin');
$staff  = new Laravist\Staff();
$business = new Laravist\Business($staff);

$business->hire($zhenxin);
var_dump($staff);

*/


/*
 * 4. 使用很多框架使用的单入口文件自动加载类
 *      单文件入口即在index.php文件中包含autoload.php以及需要执行的文件,
 *      在需要执行的文件中可以直接引用命名空间中的类。
 *
 * */

use Laravist\Person;
use Laravist\Staff;
use Laravist\Business;

$zhenxin = new Person('zhenxin');
$staff  = new Staff();
$business = new Business($staff);

$business->hire($zhenxin);
var_dump($staff);

?>

你可能感兴趣的:(PHP Composer详解)