1

我正在使用 tFPDF 类。

我正在使用此代码扩展此类以获取自定义页眉和页脚

class PDF extends tFPDF{
    function Header(){
        $this->Image('../../images/logo-admin.png',10,6,30);

        $this->SetFont('DejaVu','',13);
        $this->Cell(247,10,$produto,0,0,'C',false);

        $this->SetDrawColor(0,153,204);
        $this->SetFillColor(98,197,230);
        $this->SetTextColor(255);
        $this->Cell(30,10,date('d/m/Y'),1,0,'C',true);

        $this->Ln(20);
    }

    function Footer(){
        $this->SetY(-15);
        $this->SetFont('Arial','',8);
        $this->Cell(0,10,'P'.chr(225).'gina '.$this->PageNo().'/{nb}',0,0,'C');
    }
}

我需要做的是以某种方式更改$produto不属于该类的变量。

我正在使用$pdf = new PDF();.

我如何将一个变量传递给这个类,以便我可以使用一个字符串,比如$pdf = new PDF('SomeString');在类中使用它,比如$this->somestring = $somestringfromoutside

4

3 回答 3

3

您可以使用protectedvar 并声明一个 setter。

class PDF extends tFPDF {

protected $_produto = NULL;

public function Header(){
    /* .. */
    $this->Cell(247,10,$this->_getProduto(),0,0,'C',false);
    /* .. */
}

public function Footer(){
    /* .. */
}

public function setProduto($produto) {
    $this->_produto = $produto;
}

protected function _getProduto() {
    return $this->_produto;
}

}

// Using example 
$pdf = new PDF();
$pdf->setProduto('Your Value');
$pdf->Header();
于 2012-07-25T15:33:26.440 回答
1

最好的办法是使用带有 $myString 的默认参数的 __construct() 方法

class PDF extends tFPDF{
    public $somestring;

    function __construct($myString = '') {
        parent::__construct();
        $this->somestring = $myString;
    }

    function Header(){
        $this->Image('../../images/logo-admin.png',10,6,30);

        $this->SetFont('DejaVu','',13);
        $this->Cell(247,10,$produto,0,0,'C',false);

        $this->SetDrawColor(0,153,204);
        $this->SetFillColor(98,197,230);
        $this->SetTextColor(255);
        $this->Cell(30,10,date('d/m/Y'),1,0,'C',true);

        $this->Ln(20);
    }

    function Footer(){
        $this->SetY(-15);
        $this->SetFont('Arial','',8);
        $this->Cell(0,10,'P'.chr(225).'gina '.$this->PageNo().'/{nb}',0,0,'C');
    }
}
于 2012-07-25T15:31:20.570 回答
0

如果您只是专门尝试注入 $producto 变量。像这样对代码进行一次更改就很容易了:

function Header($producto){

这将允许您将参数传递给 Header 函数调用。

像这样:

$tfpdf = new tFPDF();
$tfpdf->Header($producto);

如果您真的想在实例化时传递值,那么您需要定义一个构造函数,并且可能还有一个类属性来存储您的 $producto 值。然后,您将 $producto 值传递给构造函数并相应地设置属性。然后在您的标头函数中,您将引用 $this->producto 而不是 $producto。

于 2012-07-25T15:32:30.300 回答