PHP: Class 未找到 tcpdf 错误路径

PHP: Class not found tcpdf wrong path

我有一些 SVG 图表,现在我希望能够从我的网站将它们下载为 PDF 文件。为此,我想使用 TCPDF。我已经需要库的文件并给出了使用的路径,我也使用了"class_exists('TCPDF')"。两者都是return正确的值。尽管如此,我还是收到以下错误:

Fatal error: Uncaught Error: Class 'Kanboard\Controller\TCPDF' not found in C:\xampp\XAMPP\htdocs\fftboard\app\Controller\ExportController.php:172 Stack trace: #0 C:\xampp\XAMPP\htdocs\fftboard\app\Controller\ExportController.php(117): Kanboard\Controller\ExportController->downoadPDF(Array) #1 C:\xampp\XAMPP\htdocs\fftboard\app\Core\Controller\Runner.php(77): Kanboard\Controller\ExportController->summaryPDF() #2 C:\xampp\XAMPP\htdocs\fftboard\app\Core\Controller\Runner.php(31): Kanboard\Core\Controller\Runner->executeController() #3 C:\xampp\XAMPP\htdocs\fftboard\index.php(13): Kanboard\Core\Controller\Runner->execute() #4 {main} thrown in C:\xampp\XAMPP\htdocs\fftboard\app\Controller\ExportController.php on line 172

这很奇怪,因为 class 不是 'Kanboard\Controller\TCPDF' 而是 'Kanboard\Analytic\TCPDF'。这与名称空间有关吗?我不知道,如果正确需要文件,为什么它找不到 class。 文件部分代码:

namespace Kanboard\Controller;
class ExportController extends BaseController
{
  public function downoadPDF($project)
  {
    $tcpdfPath = realpath( dirname( __FILE__ ).'/../../libs/tcPDF/TCPDF-master/TCPDF-master/tcpdf.php');
    require_once $tcpdfPath;
    $log .=  class_exists('TCPDF');
    $pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false);
  }
}

在 "PHP class not found but it's included" 中,问题 解决。标记为 solutin 的答案只是告诉您检查文件是否存在并且确实存在。其他解决方案建议使用 <?php 而不是 <?,我之前已经这样做了,并检查 Class 是否存在,正如我上面所说的那样。

谁能解释一下为什么会出现这个错误?

当您申报时:

namespace Kanboard\Controller;

所有部分限定 class 名称将相对于该名称。您的代码在这里:

new TCPDF(...)

使用部分限定的 class 名称 -- 因为它不以 \ 开头 -- 因此,它被解析为 Kanboard\Controller\TCPDF

您说应该是 Kanboard\Analysis\TCPDF,但根据代码的编写方式,我不太确定。尝试将您的代码更新为以下任一版本:

new \TCPDF(...)
new \Kanboard\Analysis\TCPDF(...)

用实际参数替换 ...。如果第一个有效,那么 TCPDF 在 root 命名空间中(我怀疑)。如果第二个有效,那么它在您规定的命名空间中。