php 如何在 for 循环中重新声明 class
php how to redeclare class in a for loop
我正在使用一个名为 PDFmerger 的库,自然地,它将 pdf 合并在一起。我希望每晚 运行 一个 cron 来构建这些,让它们为第二天做好准备。问题是当我 运行 第一个代码之后的代码失败了,因为它试图重新声明 class。
for
语句...
foreach ($pdfs_to_build as $pdf) {
// do stuff
$this->merge_pdfs($pdf['pdf_id']);
}
我的 pdf 合并代码在循环中得到 运行...
$pdf = new PDFMerger;
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-1.pdf', '1');
$pdf->addPDF(DIR_FINAL_PDFS.$pdf_id.'/custom-page-1.pdf','1');
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-2.pdf', '1');
$pdf->merge('file', DIR_FINAL_PDFS.$pdf_id.'/final-build-'.$pdf_id.'.pdf');
第一个完成后出错,我们进入下一个...
Fatal error: Cannot redeclare class PDFMerger in /var/www/example/pdfmerger/PDFMerger.php on line 24
我想知道是否有解决方法?
问题不在于您两次调用 new PDFMerger
,这是完全可以接受的。问题是文件:
/var/www/example/pdfmerger/PDFMerger.php
被 include
执行(或以其他方式执行)两次,第 24 行:
class PDFMerger {
这就是触发您的错误的原因,class 已被声明。弄清楚为什么该文件被包含两次,您的错误就会消失。
你的代码没问题。那不会失败。但是,未在您发布的内容中列出,您包括 PDFMerger.php
。
可能是通过在循环内 https://pdfmerger.codeplex.com/ 运行 处显示 include 'PDFMerger.php';
。
只需将该行移出循环 and/or 将 include
更改为 include_once
。
我正在使用一个名为 PDFmerger 的库,自然地,它将 pdf 合并在一起。我希望每晚 运行 一个 cron 来构建这些,让它们为第二天做好准备。问题是当我 运行 第一个代码之后的代码失败了,因为它试图重新声明 class。
for
语句...
foreach ($pdfs_to_build as $pdf) {
// do stuff
$this->merge_pdfs($pdf['pdf_id']);
}
我的 pdf 合并代码在循环中得到 运行...
$pdf = new PDFMerger;
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-1.pdf', '1');
$pdf->addPDF(DIR_FINAL_PDFS.$pdf_id.'/custom-page-1.pdf','1');
$pdf->addPDF(DIR_BOOKS.$book_path.'/static-pages/page-2.pdf', '1');
$pdf->merge('file', DIR_FINAL_PDFS.$pdf_id.'/final-build-'.$pdf_id.'.pdf');
第一个完成后出错,我们进入下一个...
Fatal error: Cannot redeclare class PDFMerger in /var/www/example/pdfmerger/PDFMerger.php on line 24
我想知道是否有解决方法?
问题不在于您两次调用 new PDFMerger
,这是完全可以接受的。问题是文件:
/var/www/example/pdfmerger/PDFMerger.php
被 include
执行(或以其他方式执行)两次,第 24 行:
class PDFMerger {
这就是触发您的错误的原因,class 已被声明。弄清楚为什么该文件被包含两次,您的错误就会消失。
你的代码没问题。那不会失败。但是,未在您发布的内容中列出,您包括 PDFMerger.php
。
可能是通过在循环内 https://pdfmerger.codeplex.com/ 运行 处显示 include 'PDFMerger.php';
。
只需将该行移出循环 and/or 将 include
更改为 include_once
。