将变量传递给扩展另一个的类

时间:2012-07-25 15:25:07

标签: php

我正在使用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

中使用它

3 个答案:

答案 0 :(得分:3)

您可以使用protected var并声明一个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();

答案 1 :(得分:1)

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

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');
    }
}

答案 2 :(得分:0)

如果您特意只尝试注入$ producto变量。在代码中进行一次更改就很容易了:

function Header($producto){

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

像这样:

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

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