【问题标题】:Class 'Spatie\PdfToText\Pdf' not found [closed]找不到类“Spatie\PdfToText\Pdf”[关闭]
【发布时间】:2017-12-16 15:01:14
【问题描述】:

我试图继续运行 Spatie\PdfToText。 我有以下错误:

找不到类“Spatie\PdfToText\Pdf”

我读了this,但没有帮助。

use Spatie\PdfToText\Pdf;

public function importInRequestStore($projectId, Request $request)
{
    require  base_path().'/vendor/autoload.php';
    $text = (new Pdf())
        ->setPdf('book.pdf')
        ->text();
}

这段代码有什么问题?我找不到谷歌的解决方案。提前致谢。

【问题讨论】:

  • 您是否在要求spatie 后更新了自动加载?
  • 是的,我做了作曲家更新
  • 我尝试更改命名空间,但仍然出现同样的错误。很奇怪!
  • 您是否有自动加载或高于此的要求?单独的use 语句不会加载类文件
  • 我为所有文件添加了上述要求,它可以工作。但我不明白,为什么 laravel 加载所有其他文件但没有这个。

标签: php laravel pdftotext


【解决方案1】:

您必须包含“autoload.php”,如下所述: https://github.com/spatie/pdf-to-text/issues/3

所以在大多数情况下正确的工作示例是这样的:

require 'vendor/autoload.php';
use Spatie\PdfToText\Pdf;
echo Pdf::getText('book.pdf');

所以问题是文档页面上缺少信息:https://github.com/spatie/pdf-to-text

【讨论】:

  • 这个(4 岁的)问题被标记为 laravel,假设代码是 Laravel 应用程序的一部分似乎是合理的,它应该自己处理自动加载。
  • @miken32:是的,假设很多事情会导致死胡同是合理的。不幸的是,您的假设不正确。我自己测试过。
【解决方案2】:

它不会加载该类,因为这些 spatie 类没有服务提供者。

您应该修改 Laravel/Lumen 项目根目录下的 composer.json。

您可以在自动加载节点中添加如下所示的类映射路径:

"autoload": {
    "classmap": [
        "vendor/spatie"
    ]
},

或者您可以在自动加载节点中添加如下所示的 psr-4 键值(这是推荐的方式):

"autoload": {
    "psr-4": [
        "Spatie\\": "vendor/spatie"
    ]
},

最后重要是你应该composer dump-autoload然后。否则 spatie 类永远不会加载。

【讨论】:

  • 这是不对的。不是 Laravel 负责在供应商文件夹中加载包,而是 composer,如果包是通过 composer max 安装的,你需要做一个 composer dump-autoload。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 2021-02-14
  • 2017-11-25
  • 1970-01-01
相关资源
最近更新 更多