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

comopser update

composer search + php包

composer show + php包

composer require + php包

使用composer创建一个项目

命令: composer create-project php包 + 目录名 + 版本号

例如: composer create-project laravel/laravel Laravel-5.2 5.2.0

参考资料

composer官网:

composer 中文官网:

composer 包地址:

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详解相关推荐

  1. Jar/War/Ear等包的作用与区别详解

    Jar/War/Ear等包的作用与区别详解 以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.ja ...

  2. java ear war_基于Java的打包jar、war、ear包的作用与区别详解

    基于Java的打包jar.war.ear包的作用与区别详解 以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希 ...

  3. shadow dom的作用和用法详解(createShadowRoot, attachShadow)

    相信shadow dom很多前端开发工作者都遇到过,它是web component的一部分.不过对于shadow dom很多人并不深入了解,只晓得是影子dom结构,那么到底什么是shadow dom的 ...

  4. oracle里面asm的作用,Oracle ASM 详解

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  5. java ear war_[转] 基于Java的打包jar、war、ear包的作用与区别详解

    以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果.除jar以外对于J2EE来说还有war和ear.区 ...

  6. DOCTYPE声明作用及用法详解

    一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...

  7. Python对象中__del__方法起作用的条件详解

    对象的__ del __是对象在被gc消除回收的时候起作用的一个方法,它的执行一般也就意味着对象不能够继续引用. 示范代码如下: class Demo: def __del__(self): prin ...

  8. AFNetwork作用和用法详解

    AFNetwork是一个轻量级的网络请求api类库.是以NSURLConnection, NSOperation和其他方法为基础的. 下面这个例子是用来处理json请求的: NSURL *url = ...

  9. 电脑键盘上每个键的作用_键盘F键有什么作用 键盘F键作用介绍【详解】

    主要介绍功能区键区的F1~F12,还有就是多数笔记本上都带有的Fn键. 首先请大家看看自己的笔记本自带键盘上F1~F2键上出了Fx之外是不是还有一个图标. 部分外接键盘上也会有这些图标的. 1 F1~ ...

  10. hdmi接口有什么用_路由器USB接口有什么用 路由器USB接口作用介绍【详解】

    路由器USB接口有什么用?原来这样用!相信很多用户注意到无线路由器接口的改变,除了传统的WAN口和LAN口外,出现了1-2个USB接口.那么这个USB接口能够帮助我们解决什么问题,开拓什么样的新应用呢 ...

最新文章

  1. redis集群之REDIS CLUSTER
  2. Spring 详解(三):AOP 面向切面的编程
  3. 好奇心、求知欲、理解力一直是我生命里最强大的驱动力​
  4. row number函数_窗口函数介绍及案例实战
  5. 如何利用OUTLOOK提高你的工作效率
  6. delphi mysql 连接_Delphi 使用之连接数据库
  7. jsp html5 模板,JSP标准模板库
  8. android最强管理软件root,SuperSU Pro v2.82中文专业版-超强安卓手机root工具
  9. 初识html5-当当网图书分类页面,html+css静态页面当当网案例
  10. 51单片机——串口通信
  11. 2_PY基本数据类型
  12. 简单编写图书管理系统
  13. mysql创建数据库error1044_Mysql创建数据库时提示Error 1044
  14. 微信小程序毕业设计 基于微信校园跑腿小程序系统开题报告
  15. 申请签证时工作单位证明英文摸版
  16. 2D转换图片放大实用场景(11)
  17. 【选型指南】数字源表/源测量单元/SMU选型的7个重要指标
  18. 组合泛化太难?试试解析式学习,100%准确率!
  19. 计算机网络【Computer Networks】学习记录01
  20. 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc

热门文章

  1. 关于拼多多的一些分析//2021-2-26
  2. 直播系统具备有什么样的优势?带你了解股阿奴与直播系统的优势
  3. BH1750_数字16位串行输出型环境光传感器
  4. 易捷行云亮相北京卫视,战略性新兴产业引发持续关注
  5. 蓝牙通信的简要设计与开发(附加题)
  6. 微信企业号开发,给用户推送信息
  7. 2007版本中国网络新秀之七剑下天山
  8. 只需7步,魔方6面即刻还原!
  9. openlayers3中,在地图上添加静态边界线
  10. 05 无人机动态模型