美文网首页
PHP Composer详解

PHP Composer详解

作者: zhenx1n | 来源:发表于2018-10-16 20:37 被阅读0次

    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'文件中指定命名空间与目录之间的映射关系。
    
    autoload_namespaces.php.png
        'autoload_psr4.php'中指定符合psr-4标准的命名空间与目录之间的关系。
    
    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官网: <https://getcomposer.org/>
    composer 中文官网: <https://www.phpcomposer.com/>
    composer 包地址: <https://packagist.org/explore/>
    

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

    <?php
    /**
     * Created by PhpStorm.
     * User: zhenxin
     * Date: 2018/10/14
     * Time: 10:46
     */
    
    
    /*
     * 一个知识点: php 依赖注入
     *      php 依赖注入的含义是一个类初始化依赖于另一个类,例如本例中Business类中的构造方法参数为Staff类
     *      所以必须先初始化一个Staff类,才能创建Business类的实例
     * */
    
    /*
     * 1. 将所有类放在一个文件中
     * */
    
    /*
    class Person{
    
        protected $name;
    
        public function __construct($name)
        {
            $this->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详解

          本文链接:https://www.haomeiwen.com/subject/hhrtzftx.html