dompdf 0.8.2 generates PHP errors: "Uncaught Error: Class 'Dompdf' not found"

dompdf 0.8.2 generates PHP errors: "Uncaught Error: Class 'Dompdf' not found"

我正在处理的遗留应用程序使用 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 在一个函数中工作?

您的代码应该可以工作:

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