Ycc365下载-亚洲365bet投注-帕尼尼球星卡FIFA365

PHP Composer安装和使用教程(新手必看)

在实现 MVC 设计模式时,需要手动加载文件,开发效率低,并且在实际项目开发中,还需要给项目添加依赖,从而扩展项目的功能。为此,本节

PHP Composer安装和使用教程(新手必看)

在实现 MVC 设计模式时,需要手动加载文件,开发效率低,并且在实际项目开发中,还需要给项目添加依赖,从而扩展项目的功能。为此,本节将在自定义框架中使用 Composer 管理项目,实现自动加载和管理项目依赖。

安装Composer

Composer 是 PHP 项目中用于管理项目依赖(dependency)的工具。开发人员在项目中声明依赖的外部工具库,Composer 就会自动安装这些工具库依赖的库文件。

大多数 PHP 框架都支持使用 Composer 管理项目依赖。Composer 还为项目实现了自动加载。

在 Composer 的官方网站可以下载 Composer,或者直接在网盘里下载最新版的安装包:

网盘下载:https://pan.quark.cn/s/b1f6bc7bda7a

在 Windows 中安装 Composer 的方式有两种,一种是使用安装程序安装,另一种是使用命令行安装。

这里选择使用安装程序安装,具体安装步骤如下:

① 下载 Composer-Setup.exe,下载后双击文件图标启动安装程序,选择推荐的安装模式。

② 安装程序提示选择是否使用开发者模式(Developer mode),若选中此项,则不提供卸载功能,推荐不选中。

③ 安装过程提示选择 PHP 命令行程序时,单击“Browse…”按钮浏览文件,选择 C:\web\php8.2\php.exe。

④ 进入填写代理服务器界面后,选择不使用代理,单击“Next”按钮。

⑤ 进入准备安装界面,单击“Install”按钮进行安装。

Composer 安装成功后,会自动添加环境变量。在系统变量 Path 中添加的路径如下:

C:\web\php8.2

C:\ProgramData\ComposerSetup\bin

在上述路径中,“C:\web\php8.2”是 PHP 的安装目录,“C:\ProgramData\ComposerSetup\bin”是 Composer 的可执行文件目录。

在用户变量 Path 中添加的路径如下:

//全局依赖包的可执行文件目录

C:\Users\用户名\AppData\Roaming\Composer\vendor\bin

上述路径表示全局依赖包的可执行文件目录。

⑥ 打开新的命令提示符窗口,执行“composer”命令测试 Composer 是否安装成功,如果看到下面的结果,说明 Composer 安装成功。

______

/ ____/___ ____ ___ ____ ____ ________ _____

/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/

/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /

\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/

/_/

Composer version 2.5.5……

使用Composer实现自动加载

虽然 PHP 提供了自动加载机制,但是要在项目中实现自动加载功能还需要手动编写代码,操作起来相对复杂。

为了使开发更简单,可以在 myframe.test 项目中使用 Composer 实现类的自动加载,具体步骤如下:

① 在 C:\web\www\myframe 目录下创建 composer.json 文件,具体代码如下:

{

"autoload": {

"psr-4": {"App\\": "app/"}

}

}

在上述代码中,“autoload”表示使用自动加载,“psr-4”表示自动加载的类文件要遵循 PSR-4 的要求,“App\\”表示 App 命名空间,“app/”表示 app 目录。

此处的配置表示将 App 命名空间映射给 app 目录,当需要加载 App 命名空间中的类时,到 app 目录中查找类文件,App 命名空间中的子命名空间将会映射为 app 目录下的子目录。

例如,当需要自动加载 App\Http\Controllers\StudentController 类时,加载的类文件路径为 app\Http\Controllers\StudentController.php。

② 在命令提示符窗口中切换到 composer.json 文件所在目录中,执行 composer install 命令安装依赖关系所需组件,并初始化自动加载信息。

命令执行完成后,输出结果如下:

Loading composer repositories with package information

Updating dependencies (including require-dev)

Nothing to install or update

Generating autoload files

完成上述操作后,会在当前目录下生成一个 vendor 目录,其目录结构如下图所示:

图 1 vendor 目录结构

在项目中直接引入 vendor\autoload.php 文件就可以实现自动加载,实现自动加载功能的具体代码都保存在 vendor\composer 目录中。

需要注意的是,vendor\composer 目录中的文件都是由 Composer 自动生成的,不推荐开发人员修改里面的代码。

③ 重新编写 public\index.php 文件,引入 vendor\autoload.php 文件实现自动加载,具体代码如下:

require '../vendor/autoload.php';

④ 为了和 Laravel 框架的模型文件的命名方式保持一致,将原有的模型文件 app\StudentModel.php 路径改为 app\Models\Student.php。然后修改 app\Models\Student.php 文件,将命名空间放在 App 下,并修改类名,具体代码如下:

namespace App\Models; // 将命名空间放在App\Models下

use MySQLi; // 在定义命名空间后,需要导入根命名空间下的类

class Student // 将模型的类名StudentModel修改为Student

……(原有代码)

在上述代码中,第 2 行代码定义了命名空间,构造方法中的 MySQLi 类在根命名空间下,第4行代码导入了 MySQLi 命名空间。

⑤ 将原有的 app\StudentController.php 文件放入 app\Http\Controllers 目录中,在文件中导入命名空间,具体代码如下:

namespace App\Http\Controllers;

use App\Models\Student;

class StudentController

{

public function index()

{

$student = new Student();

$data = $student->getAll();

require VIEW_PATH . 'student.php';

}

}

在上述代码中,第 4 行代码用于导入 Student 模型的命名空间。

⑥ 将原有的视图文件 views\student.php 移动到 resources\views 目录中。

⑦ 修改 public\index.php 文件,定义路由规则,根据路由找到对应的控制器名和方法名,具体代码如下:

require '../vendor/autoload.php';

// 定义视图文件的路径常量

define('VIEW_PATH', '../resources/views/');

// 获取PATH_INFO

$pathinfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';

// 定义路由规则

$route = [

'student' => 'StudentController/index'

];

// 根据路由找到对应的控制器名和方法名

$pathinfo = trim($pathinfo, '/');

if (isset($route[$pathinfo])) {

$pathinfo = $route[$pathinfo];

list($controller, $action) = explode('/', $pathinfo);

} else {

$arr = explode('/', $pathinfo);

if (!isset($arr[1])) {

exit('请求信息有误。');

}

$controller = ucwords($arr[0]) . 'Controller';

$action = $arr[1];

}

// 拼接出完整的命名空间

$controller = '\\App\\Http\\Controllers\\' . $controller;

// 创建控制器,调用控制器中的方法

$obj = new $controller();

$obj->$action();

完成上述代码后,通过浏览器访问 http://www.myframe.test/student,如果输出了学生列表,说明已经通过 Composer 实现了类的自动加载。

使用Composer管理项目依赖

在以前的开发中,如果在项目中使用了某个类库,需要手动下载这个类库的文件,并在代码中引入类库后才能使用。这种方式不仅麻烦,而且当类库的版本更新后,还需要重新下载类库。如果一个类库又依赖于另一个类库,这种层叠的依赖关系会让项目的维护变得复杂并且低效。

为了解决手动下载类库这个问题,Composer 提供了项目依赖管理功能,它可以自动完成依赖包的下载和安装,并通过命名空间自动引入。

Composer 通过 packagist 资源库获取依赖包。在 packagist 资源库中,依赖包的命名方式为“用户名/包名”。例如“naux/auto-correct”包能够在中文和英文之间添加空格,并纠正专用名词的大小写。

安装依赖包的方式有两种:

一种是使用 composer require 命令安装;

另一种是在 composer.json 文件中添加包的相关信息,在命令提示符窗口中执行 composer install 命令或执行 composer update 命令。

通常情况下,一个包会有多个版本,指定版本号有多种方式,具体如下表所示:

表:指定版本号的方式

名称

实例

描述

特定的版本

3.1.33

包的版本是 3.1.33

某个范围的版本

~1.0

包的版本大于等于 1.0 且小于 1.1

^1.0

包的版本大于等于 1.0 且小于 2.0

>=3.1

包的版本大于等于 3.1

>=2.6,<3.0

包的版本大于等于 2.6 且小于 3.0

>=2.6,<3.0|>=3.1

包的版本大于等于 2.6 且小于 3.0,或大于等于 3.1

通配符方式

3.1.*

与>=3.1,<3.2 等价

下面以“naux/auto-correct”包为例,演示使用 Composer 管理项目依赖,具体步骤如下:

① 安装依赖包需要开启 zip 扩展,打开 PHP 配置文件 php.ini,搜索“zip”找到 zip 扩展的配置项,将配置项前面的注释去掉,修改后的配置如下:

extension=zip

② 重启 Apache 服务使修改后的配置生效。

③ 在命令提示符窗口中,切换到 C:\web\www\myframe 目录,执行如下命令安装依赖包:

composer require naux/auto-correct=1.0.3

在上述命令中,naux/auto-correct 表示要加载的包名,包名后面的“=”用于指定版本号,“1.0.3”是版本号。

安装依赖包后,打开 composer.json 文件,会看到里面自动添加了如下代码:

"require": {

"naux/auto-correct": "1.0.3"

}

打开 vendor 目录,会看到里面新增了 naux 目录,使用 Composer 下载的依赖包代码就保存在该目录中。

④ 在 app\Http\Controllers\StudentController.php 中导入命名空间,具体如下所示:

use Naux\AutoCorrect;

⑤ 导入命名空间后,编写 test() 方法,具体代码如下:

public function test()

{

$correct = new AutoCorrect;

// 在中文和英文之间添加空格

echo $correct->auto_space('《php快速入门教程》');

// 纠正专用词汇的大小写

echo $correct->auto_correct('《php快速入门教程》');

}

⑥ 通过浏览器访问 http://www.myframe.test/student/test,输出结果如下:

《php快速入门教程》

《PHP快速入门教程》

从上述输出结果可以看出,第 1 行的 php 字符前后添加了空格,第 2 行的 php 被转换成了 PHP。

如需卸载依赖包,可以使用如下命令:

composer remove naux/auto-correct

上述命令执行后,会将 naux/auto-correct 在 composer.json 中的依赖配置删除,并且会删除 vendor 目录中该依赖包的相关文件。

通过上述操作可以看出,使用 Composer 管理项目依赖非常方便,只需执行命令安装需要使用的依赖包,在代码中导入命名空间即可。

← 上一篇: 鸟鸣声背后的秘密:20种常见鸟叫声解析
下一篇: 蓝色妖姬价格多少钱一朵 蓝色妖姬价格多少钱 →

相关推荐

沪的笔顺(笔画顺序)汉字沪的笔顺动画
Mobikok—海外电商广告营销
拦截导购台是什么?用途与运作原理解答
DNF商人倒卖攻略 DNF怎么赚钱快
坩的组词、含义
锻炼健身APP应用:Seven – 7分钟锻炼挑战(解锁200项)
小蚁4K运动相机到底值不值得买?看完这篇你就懂了
王者荣耀s40赛季新皮肤获取方法
App StorePreview
言短意长
英雄联盟手游蛇年皮肤有哪些 英雄联盟手游蛇年皮肤价格一览
火线魔盒下载安装及使用教程:一看就会