如何将 PHP class 数据传递给 $this 中的另一个 class?

How can I pass PHP class data to another class within $this?

我正在尝试构建 OOP PHP 发票脚本。我想将数据输出为 PDF,所以我使用的是 FPDF。我在 invoice-class 的方法中创建了这个对象,如下所示:

public function renderPDF() {

        require("pdf.class.php");

        $this->invoicePDF = new PDF();

        $this->invoicePDF->AddPage();
        $this->invoicePDF->SetFont('Helvetica','',12);


        //build PDF
    }

在 pdf.class.php 中使用静态数据进行测试时,此方法及其调用工作完美。但是如何在 pdf-class?

中使用 $this (invoice-class) 的数据

我试过在 new PDF($this) 的创建中传递 $this 并在 __construct 中调用它。是这样吗?它抛出一个 FDPF error/warning: 警告: count(): Parameter must be an array or an object that implements Countable

为了全面披露,pdf.class.php(字里行间有荷兰语注释):

require('fpdf181/fpdf.php');
include("fpdf181/font/helvetica.php");
include("fpdf181/font/helveticab.php");
include("fpdf181/font/helveticabi.php");
include("fpdf181/font/helveticai.php");


class PDF extends FPDF
{
    private $invoiceData;
    function __construct($invoiceClass) {
        $this->invoiceData = $invoiceClass;
    }
    //Page header
    function Header()
    {
        //Logo
        $this->Image('../img/icon-192-circle.png',10,8,33);
        //Arial vet 15
        $this->SetFont('Helvetica','B',15);
        //Beweeg naar rechts
        $this->Cell(80);
        //Titel
        $this->Cell(30,10,'Factuur',0,0,'C');

        $this->Cell(30,10,$this->invoiceData->getInvoiceDate(),0,0,'C');
        //Line break
        $this->Ln(20);
    }

    //Page footer
    function Footer()
    {
        //Positie 1.5 cm van de onderkant
        $this->SetY(-15);
        //Arial cursief 8
        $this->SetFont('Arial','I',8);
        //Pagina nummer
        $this->Cell(0,10,'Gelieve binnen 14 dagen overmaken op IBAN: INGB 12345678910 onder vermelding van factuurnummer.',0,0,'C');
    }
}

我在 Whosebug 上搜索了答案,阅读了 FPDF 的文档,但没有找到适合我的答案。 希望有人能帮助或指出正确的方向!

您正在覆盖 FPDF 的默认构造函数,它与您传递给自己的构造函数的参数不兼容。

要么使用正确的参数在您自己的构造函数中调用父构造函数,要么在实例化您的 class 后使用另一个函数,如下所示:

$this->invoicePDF = new PDF();
$this->invoicePDF->setInvoiceData($this);