【问题标题】:dompdf 0.8.2 generates PHP errors: "Uncaught Error: Class 'Dompdf' not found"dompdf 0.8.2 生成 PHP 错误:“未捕获的错误:找不到类 'Dompdf'”
【发布时间】:2021-01-10 23:55:52
【问题描述】:

我正在开发的旧版应用程序使用dompdf 从 html 内容生成 PDF。我们正在努力将 php 5x 更新为 php 7x,因此我们需要将 dompdf0.6.1 更新为 0.8.2

我首先在一个独立文件中测试了 0.8.2,它运行良好。

在应用程序中,pdf创建发生在一个函数中,像这样(但更复杂的IRL)

function createPDF($html,$filename,$paper,$orientation)
{
    require_once("static/dompdf_0.8.2/autoload.inc.php");
    use Dompdf\Dompdf;
    $dompdf = new Dompdf();
    $dompdf->loadHtml($html);
    $dompdf->setPaper($paper, $orientation);
    $dompdf->render();
    $dompdf->stream($filename);
    return true;
}

这会针对上述函数中的use Dompdf\Dompdf 行生成PHP Parse error: syntax error, unexpected 'use' (T_USE)

我尝试将 require 和 use 行移到函数之外(再次简化)

require_once("static/dompdf_0.8.2/autoload.inc.php");
use Dompdf\Dompdf;

function createPDF($html,$filename,$paper,$orientation)
{
    $dompdf = new Dompdf();
    $dompdf->loadHtml($html);
    $dompdf->setPaper($paper, $orientation);
    $dompdf->render();
    $dompdf->stream($filename);
    return true;
}

这会在$dompdf = new Dompdf(); 行上生成PHP Fatal error: Uncaught Error: Class 'Dompdf' not found

有没有一种相对轻松的方法可以让 dompdf 0.8.2 在函数中工作?

【问题讨论】:

    标签: php dompdf


    【解决方案1】:

    您的代码应该可以工作:

    require_once 'static/dompdf_0.8.2/src/autoload.inc.php';
    use Dompdf\Dompdf;
    
    function createPDF($html,$filename,$paper,$orientation)
    {
        $dompdf = new Dompdf();
        $dompdf->loadHtml($html);
        $dompdf->setPaper($paper, $orientation);
        $dompdf->render();
        $dompdf->stream($filename);
        return true;
    }
    

    确保require_once 被执行(成功)以加载autoload.inc.php

    【讨论】:

    • 选择了你的正确,但是我发现我只需要在同一个文件中包含 requireuse 行作为函数。当我将这两行移到配置文件时,我继续收到相同的错误。不知道为什么,但我现在有一个解决方法。
    • @acoder 因为use Dompdf\Dompdf 表示您正在导入所述命名空间,然后活动文件知道Dompdf 实际上表示\Dompdf\Dompdf。如果你真的想要,你可以跳过use 语句,改为使用new \Dompdf\Dompdf();
    猜你喜欢
    • 1970-01-01
    • 2018-12-10
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多