使用 Composer 和示例

在之前的文章中,我们了解了 composer 是什么、谁使用它以及如何安装它。 在这里,我们将介绍一些基本用例示例,说明如何使用我们之前设置的 composer 工具获取包。

这 example 本文中记录的内容可以在本地完成,也可以在您的 Liquid Web 全托管 cPanel 服务器上完成,在任何一种情况下,这些说明都应该以拥有网站文件的用户身份运行。 在 cPanel 服务器上,这意味着您通过 SSH 以 cPanel 用户身份登录来运行这些,并且您将从 public_html 中开始。

示例 #1:使用 Composer 获取 GuzzleHTTP

作为最流行的 PHP HTTP 客户端之一,Guzzle 是一个可以让发送 HTTP 请求变得简单而容易的库。 作为一个广泛使用且文档齐全的库,Guzzle 是一个易于任何开发人员或设计人员利用的软件包。

要试用 Guzzle,请运行以下命令:

$ mkdir guzzleTest
$ cd ./guzzleTest/
$ composer require guzzlehttp/guzzle

然后在同一文件夹中创建一个 index.php 文件,内容如下:

<?php
require_once 'vendor/autoload.php';
$client = new GuzzleHttpClient();

// Make a request
$res = $client->request('GET', 'https://www.timeapi.org/utc/now.json');

// Output the status code of the response
echo 'Page response code: '.$res->getStatusCode();
echo "<hr/>";
// "200"

// Output headers of the response
echo 'Response Content-Type header: ';
print_r( $res->getHeader('content-type') );
echo "<hr/>";
// 'application/json; charset=utf8'

// Output the actual content (body) of the response
echo 'Response Body content: ';
echo $res->getBody();
echo "<hr/>";
?>

在上面的 PHP 代码中,以 ‘//’ 开头的行被认为是注释,它们只是用来帮助详细说明脚本的每个步骤。

在浏览器中打开新的 index.php 文件应该会产生一个页面,其中显示:HTTP 响应代码、所提供响应的“Content-Type”标头以及响应的实际内容。

示例 #2:获取框架

虽然 composer 主要用于获取站点运行所需的特定库和包,但也可以使用 composer 提供整个框架或 CMS。 Laravel 是众多使用 composer 分发其核心文件的流行 PHP 框架之一。 一个 example 使用 composer 获取 Laravel 可以通过以下命令完成:

$ composer create-project --prefer-dist laravel/laravel ./laraTest

执行此命令后,composer 将为您做很多事情; 它将创建“laraTest”文件夹,初始化 composer.json 文件,获取任何必要的依赖项,然后设置 Laravel 特定的文件。

为了验证这一点 example 你需要熟悉 Laravel 框架,但是你可以通过检查文件结构来验证 composer 是否完成了它的工作。 要检查文件结构,请运行以下命令:

$ ls -lah

您应该会看到类似于以下内容的结构:

total 200K
drwxr-xr-x 11 user users 4.0K Aug 8 13:17 .
drwxr-xr-x 10 user nginx 4.0K Aug 8 13:16 ..
drwxr-xr-x 10 user users 4.0K Apr 27 09:01 app
-rwxr-xr-x 1 user users 1.7K Apr 27 09:01 artisan
drwxr-xr-x 3 user users 4.0K Apr 27 09:01 bootstrap
-rw-r--r-- 1 user users 1.3K Apr 27 09:01 composer.json
-rw-r--r-- 1 user users 111K Aug 8 13:17 composer.lock
drwxr-xr-x 2 user users 4.0K Apr 27 09:01 config
drwxr-xr-x 5 user users 4.0K Apr 27 09:01 database
-rw-r--r-- 1 user users 458 Aug 8 13:17 .env
-rw-r--r-- 1 user users 423 Apr 27 09:01 .env.example
-rw-r--r-- 1 user users 61 Apr 27 09:01 .gitattributes
-rw-r--r-- 1 user users 73 Apr 27 09:01 .gitignore
-rw-r--r-- 1 user users 503 Apr 27 09:01 gulpfile.js
-rw-r--r-- 1 user users 212 Apr 27 09:01 package.json
-rw-r--r-- 1 user users 1.1K Apr 27 09:01 phpunit.xml
drwxr-xr-x 2 user users 4.0K Apr 27 09:01 public
-rw-r--r-- 1 user users 1.9K Apr 27 09:01 readme.md
drwxr-xr-x 5 user users 4.0K Apr 27 09:01 resources
-rw-r--r-- 1 user users 567 Apr 27 09:01 server.php
drwxr-xr-x 5 user users 4.0K Apr 27 09:01 storage
drwxr-xr-x 2 user users 4.0K Apr 27 09:01 tests
drwxr-xr-x 29 user users 4.0K Aug 8 13:17 vendor