如何将 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);
我正在尝试构建 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);