php如何在for循环中重新声明类

时间:2015-03-10 13:21:53

标签: php oop

我正在使用名为PDFmerger的库,当然,它将pdfs合并在一起。我希望每天晚上运行一个cron来构建这些,以便让它们为第二天做好准备。问题是当我在第一个代码失败后运行代码时,因为它试图重新声明该类。

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');

第一个1完成后出错,我们进入下一个......

  

致命错误:无法在第24行的/var/www/example/pdfmerger/PDFMerger.php中重新声明类PDFMerger

我想知道是否有解决方法?

2 个答案:

答案 0 :(得分:2)

问题不在于你两次致电new PDFMerger,这是完全可以接受的。问题是文件:

/var/www/example/pdfmerger/PDFMerger.php

正在include' d(或以其他方式执行)两次,其中有第24行:

class PDFMerger {

这就是触发你的错误,该类已经被声明了。找出为什么该文件被包含两次,你的错误将被清除。

答案 1 :(得分:0)

你的代码很好。那不会失败。但是,未列在您发布的内容中,您包括PDFMerger.php。 可能是在https://pdfmerger.codeplex.com/显示的include 'PDFMerger.php';在循环内运行。

只需将该行移出循环和/或将include更改为include_once