美文网首页
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详解

    PHP composer php composer的作用 composer是如何实现类的自动加载 composer...

  • Composer安装和使用

    安装Composer 标签(空格分隔): PHP laravel composer Composer 参考:htt...

  • 安装

    php composer环境安装参照php环境 按照官网安装配置composer global require l...

  • Composer 安装(Linux)

    安装 git 下载 Composer 并使用 php 运行 Composer 环境变量 查看 Composer 版本

  • 2.1. 简介

    简介2.3. 创建扩展包 |《Composer 中文文档》| PHP 技术论坛 Composer 是 PHP 的一...

  • 知识框架

    Linux linux basic shell basic PHP php composer Framework ...

  • Composer 系列:autoload

    Composer 系列:为 PHP 配上大货车,从此搬运不再繁琐。 简介 Composer 是 PHP 的一个依赖...

  • Content-Length mismatch, receive

    将composer环境变量从php5.6更换为php7.2后,使用composer create-project ...

  • 使用七牛云

    composer安装:composer require qiniu/php-sdk -vvv 原文链接:http:...

  • laravel接入阿里云短信笔记!

    composer引入包:composer require alibabacloud/client 宝塔上对应php...

网友评论

      本文标题:PHP Composer详解

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