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 を使用してセッターを宣言できます。

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 変数のみを挿入しようとしている場合。次のようにコードを 1 つ変更するだけで十分です。

function Header($producto){

これにより、ヘッダー関数呼び出しにパラメーターを渡すことができます。

このような:

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

インスタンス化時に本当に値を渡したい場合は、コンストラクター関数を定義する必要があり、おそらく $producto 値を格納するためのクラス プロパティを定義する必要があります。次に、$producto 値をコンストラクターに渡し、それに応じてプロパティを設定します。次に、ヘッダー関数で、$producto の代わりに $this->producto を参照します。

于 2012-07-25T15:32:30.300 に答える