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);
?>
网友评论