FPDF отказывается сотрудничать по наследству - PullRequest
3 голосов
/ 13 ноября 2011

У меня есть два примера кода ниже. Один работает, а второй (используя extend для создания оболочки нового класса) - нет.

Обратите внимание, я значительно упростил следующие примеры.

Подход № 1

page.php:

<?php

include("fpdf.php");
$pdf = new FPDF;
$pdf->AddPage();
$pdf->SetFont('Arial','',11);
$pdf->Output();

?>

Это работает как ожидалось. Создает пустую страницу.

Подход № 2

Но затем, используя FPDF по наследству, я получаю ошибку (см. Ниже блоки кода).

myPDF.php:

<?php

require ("fpdf.php");

class myPDF extends FPDF {

    function createMyPage() {
        $this->AddPage();
        $this->SetFont('Arial','',11);
        $this->Output();
    }

}

?>

page.php:

<?php

include("myPDF.php");
$pdf = new myPDF;
$pdf->createMyPage();

?>

При втором подходе выдается следующее предупреждение PHP и ошибка FPDF:

Предупреждение: in_array () ожидает, что параметр 2 будет массивом, значение NULL указано в /var/www/fpdftest/fpdf.php в строке 526 Ошибка FPDF: неопределенный шрифт: helvetica

Есть идеи, что мне здесь не хватает?

1 Ответ

6 голосов
/ 13 ноября 2011

Когда вы создаете класс-оболочку, обязательно вызовите родительский конструктор:

<?php // Always use the full <?php open tag

require ("fpdf.php");

class myPDF extends FPDF {

    // Or, __construct() if you only care about PHP5
    function myPDF($orientation='P', $unit='mm', $size='A4') {
        // Call parent constructor
        $this->FPDF($orientation,$unit,$size);
        // Initialization
        $this->B = 0;
        $this->I = 0;
        $this->U = 0;
        $this->HREF = '';
    }

    function createMyPage() {
        $this->AddPage();
        $this->SetFont('Arial','',11);
        $this->Output();
    }

}

http://fpdf.org/en/tutorial/tuto6.htm

...