在 PHP 脚本中包含 Composer 的自动加载器文件

在 PHP 脚本中包含 Composer 的自动加载器文件

网站上没有提供明确的说明GitHub 页面为了php parsecsv。然而,有一个模糊的提及需要手动包含以下内容:

如果您不使用 Drupal、Laravel、Symfony、Yii 等框架,您可能需要在 PHP 脚本中手动包含 Composer 的自动加载器文件:

> require_once __DIR__ . '/vendor/autoload.php';

我不懂这啥意思。

  1. 我是否只需将此行批量复制到我的 PHP 脚本中并期望它能够工作?
  2. 是否需要针对我的目录设置特有的路径编辑 require 行?
  3. 我需要下载文件并将其放在某个地方吗?绝对来说,还是需要相对于我的PHP脚本位置放置?
  4. 这是什么__DIR__意思?

注意:我使用的是 Centos 7 系统。

答案1

该库需要包含 Composer 的自动加载器才能工作。自动加载是一项使 PHP 解释器能够在系统路径的特定模式下查找类定义的功能。

如果没有自动加载,您必须包含/需要 ( include(), require()) 每个包含类定义的文件,然后才能基于这些类实例化对象。

所以不可能出现这样的情况:

$csv = new ParseCsv\Csv('data.csv');

因为ParseCsv\CsvPHP 解释器不知道类。另一方面,自动加载使 PHP 解释器在某些模式定义的系统路径下查找具有类定义的文件,并在首次使用之前自动加载它。

所以你需要使用 作曲家。您需要在系统或项目范围内安装它。然后使用下载的composer.phar文件初始化项目(如果尚未完成):

$ composer init

之后您可以使用命令中给出的parsecsv/parse-csv-for-php图书馆:

$ composer require parsecsv/php-parsecsv

那么你必须加载Composer 的自动加载器通过将此行添加到将利用 Composer 功能的每个 PHP 文件(因此至少是您要使用php-parsecsv库的这些文件),或者将其包含在单个 PHP 文件中,例如index.php或者bootstrap.php如果该文件是整个应用程序的公共入口点。

require_once __DIR__ . '/vendor/autoload.php';

现在你可以走了。

回复您的问题:

  1. 我是否只需将此行批量复制到我的 PHP 脚本中并期望它能够工作?

是的。

  1. 是否需要针对我的目录设置特有的路径编辑 require 行?

有时。如果您使用 Composer 的默认值,那么此路径就可以了。

  1. 我需要下载文件并将其放在某个地方吗?绝对来说,还是需要相对于我的PHP脚本位置放置?

您需要下载到composer.phar某个地方,但它必须是您的项目目录。此文件只是一个外部应用程序,用于管理项目的依赖项(查看composer.json项目目录中的依赖项列表和其他与 Composer 相关的信息)。composer.phar文件本身不是应用程序运行所必需的运行,就像你不需要建房计划就可以住在房子里一样。composer.phar(可以重命名为 just composer)可以放置在任何地方(即在任何路径下),但将其放置在PATH环境变量中包含的某个目录下或应用程序的根目录下很方便,因此从命令调用它更容易线。

  1. 这是什么__DIR__意思?

下列的PHP手册文件的目录。如果在包含内部使用,则返回包含文件的目录。这相当于dirname( __FILE__)。该目录名称没有尾部斜杠,除非它是根目录。

祝你好运!

注意:这个问题可能应该在 stackoverflow.com 上问,因为它与 PHP 编程比与 UNIX/Linux 操作系统更相关:)

相关内容