如何要求通过 Composer 安装包

How to require a package installed via Composer

我通过 composer 安装了 emanueleminotto/simple-html-dom

如何使用包中的 类 而不会出现错误?

注意:我使用XAMPP到运行PHP脚本。

错误信息:

PHP Fatal error: Uncaught Error: Class 'simple_html_dom' not found in C:\xampp\htdocs\Practice\PHP\scrape_1.php:3 Stack trace:

0 {main}

thrown in C:\xampp\htdocs\Practice\PHP\scrape_1.php on line 3

Fatal error: Uncaught Error: Class 'simple_html_dom' not found in C:\xampp\htdocs\Practice\PHP\scrape_1.php:3 Stack trace:

0 {main}

thrown in C:\xampp\htdocs\Practice\PHP\scrape_1.php on line 3

显然 emanueleminotto/simple-html-dom 不使用命名空间,因此默认情况下使用全局命名空间。干净的解决方案是包括 vendor/autoload.php(作曲家 created/generated/updated)并通过在 \ 前面加上 classes/functions 来指示全局名称空间......除非你在自己的全局命名空间,在这种情况下,您不必预先考虑。

你应该可以直接使用它们。如果我没看错,整个包实际上只有一个文件,由 composer 自动加载。

如果您在 PHP 脚本中包含 vendor/autoload.php 文件,您应该可以使用包中的 类。

运行

之后
$ composer install

需要在脚本文件顶部的 vendor/autoload.php 中生成的自动加载器(或者,对于 Web 应用程序,在前端控制器中)。

然后您将在脚本中使用所有自动加载的 类。

<?php    

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

$htmlDom = new simple_html_dom_node();

参考 https://getcomposer.org/doc/01-basic-usage.md#autoloading