PHP composer作用,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'文件中指定命名空间与目录之间的映射关系。
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详解相关推荐
- Jar/War/Ear等包的作用与区别详解
Jar/War/Ear等包的作用与区别详解 以客户角度来看,jar文件就是一种封装格式,用户不需要知道jar包中有多少个.class格式的文件及每个文件中的功能与作用,也可以得到相应的访问的结果.ja ...
- java ear war_基于Java的打包jar、war、ear包的作用与区别详解
基于Java的打包jar.war.ear包的作用与区别详解 以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希 ...
- shadow dom的作用和用法详解(createShadowRoot, attachShadow)
相信shadow dom很多前端开发工作者都遇到过,它是web component的一部分.不过对于shadow dom很多人并不深入了解,只晓得是影子dom结构,那么到底什么是shadow dom的 ...
- oracle里面asm的作用,Oracle ASM 详解
Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...
- java ear war_[转] 基于Java的打包jar、war、ear包的作用与区别详解
以最终客户的角度来看,JAR文件就是一种封装,他们不需要知道jar文件中有多少个.class文件,每个文件中的功能与作用,同样可以得到他们希望的结果.除jar以外对于J2EE来说还有war和ear.区 ...
- DOCTYPE声明作用及用法详解
一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...
- Python对象中__del__方法起作用的条件详解
对象的__ del __是对象在被gc消除回收的时候起作用的一个方法,它的执行一般也就意味着对象不能够继续引用. 示范代码如下: class Demo: def __del__(self): prin ...
- AFNetwork作用和用法详解
AFNetwork是一个轻量级的网络请求api类库.是以NSURLConnection, NSOperation和其他方法为基础的. 下面这个例子是用来处理json请求的: NSURL *url = ...
- 电脑键盘上每个键的作用_键盘F键有什么作用 键盘F键作用介绍【详解】
主要介绍功能区键区的F1~F12,还有就是多数笔记本上都带有的Fn键. 首先请大家看看自己的笔记本自带键盘上F1~F2键上出了Fx之外是不是还有一个图标. 部分外接键盘上也会有这些图标的. 1 F1~ ...
- hdmi接口有什么用_路由器USB接口有什么用 路由器USB接口作用介绍【详解】
路由器USB接口有什么用?原来这样用!相信很多用户注意到无线路由器接口的改变,除了传统的WAN口和LAN口外,出现了1-2个USB接口.那么这个USB接口能够帮助我们解决什么问题,开拓什么样的新应用呢 ...
最新文章
- redis集群之REDIS CLUSTER
- Spring 详解(三):AOP 面向切面的编程
- 好奇心、求知欲、理解力一直是我生命里最强大的驱动力​
- row number函数_窗口函数介绍及案例实战
- 如何利用OUTLOOK提高你的工作效率
- delphi mysql 连接_Delphi 使用之连接数据库
- jsp html5 模板,JSP标准模板库
- android最强管理软件root,SuperSU Pro v2.82中文专业版-超强安卓手机root工具
- 初识html5-当当网图书分类页面,html+css静态页面当当网案例
- 51单片机——串口通信
- 2_PY基本数据类型
- 简单编写图书管理系统
- mysql创建数据库error1044_Mysql创建数据库时提示Error 1044
- 微信小程序毕业设计 基于微信校园跑腿小程序系统开题报告
- 申请签证时工作单位证明英文摸版
- 2D转换图片放大实用场景(11)
- 【选型指南】数字源表/源测量单元/SMU选型的7个重要指标
- 组合泛化太难?试试解析式学习,100%准确率!
- 计算机网络【Computer Networks】学习记录01
- 标题 错误票据c语言,内含答案的 -- 2013蓝桥杯C语言本科组B.doc