FPDFを使用して、チャネルデータをExpressionEngineからPDFファイルにエクスポートしています。私が使用しているFPDFは、以前に別のプロジェクトで使用したコードなので、機能するはずです。FPDFオブジェクトの通常のメソッドは機能しますが、関数にラップされるとすぐに次のようになります。
Fatal error: Call to a member function MultiCell() on a non-object
したがって、これは機能します。
include '../apps/assets/fpdf.php';
// setup the PDF object:
$pdf = new FPDF();
$pdf->SetMargins(0,0,0);
$pdf->SetAuthor("Author");
$pdf->addPage("P", "A4");
$pdf->SetTextColor(82,82,82);
// write something to the PDF:
$pdf->MultiCell(80, 6, "some text here", 0, "L");
しかし、これはしません:
include '../apps/assets/fpdf.php';
// setup the PDF object:
$pdf = new FPDF();
$pdf->SetMargins(0,0,0);
$pdf->SetAuthor("Author");
$pdf->addPage("P", "A4");
$pdf->SetTextColor(82,82,82);
writeStuff("some stuff to write");
function writeStuff($stuff) {
global $pdf;
$pdf->MultiCell(80, 6, $stuff, 0, "L");
}
コードの最後のブロックは、上記のようにエラーをスローします。
まったく同じセットアップが以前は機能していたので、それは奇妙です。主な違いは、今回はPHPがExpressionEngineテンプレートにラップされていることです。テンプレートではPHP解析が有効になっており、同じアプリケーションで他の多くのテンプレートを使用しており、多くのPHPが機能しています。
それはExpressionEngineの解析順序と関係がありますか?$ pdfオブジェクトが作成される前に、メソッド'writeStuff'が呼び出されていますか?
何か案は?