我正在使用的遗留应用程序使用dompdf
从html内容生成PDF。我们正在努力将php 5x更新为php 7x,因此我们需要将dompdf
从0.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;
}
这导致PHP Parse error: syntax error, unexpected 'use' (T_USE)
对照上述函数中的use Dompdf\Dompdf
线。
我尝试移动require并在函数外部使用行(再次简化)
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;
}
这现在在PHP Fatal error: Uncaught Error: Class 'Dompdf' not found
线上生成$dompdf = new Dompdf();
。
是否有一种相对无痛的方法让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
。