0

次のコードを使用して、PHP で FPDF クラスを拡張しようとしています。

class Reports extends FPDF{

        var $reporttitle = 'TEST';

        function settitle($titlename){      
            $this->$reporttitle = $titlename;
        }
        function header(){
            $this->SetMargins(.5,.5);   
            $this->Image('../../resources/images/img028.png');
            $this->SetTextColor(3,62,107);
            $this->SetFont('Arial','B',14);
            $this->SetY(.7);
            $this->Cell(0,0,$this->$reporttitle,0,0,'R',false,'');
            $this->SetDrawColor(3,62,107);          
            $this->Line(.5,1.1,10,1.1);
        }
    }

変数 $pdf を使用してクラスをインスタンス化し、メソッドを呼び出そうとします。

    $pdf = new Reports('L','in','Letter');  
    $pdf-> settitle('Daily General Ledger');
    $pdf->AddPage();    

内部 500 エラーが発生します....デバッグすると、$reporttitle が空のプロパティであることがわかります。拡張クラスで変数フィールドを設定する方法について、誰かが私に洞察を提供できますか? ありがとうございます。

4

2 に答える 2

3

クラス プロパティの前にドル記号を使用しないでください。

            $this->reporttitle = $titlename;

$reporttitleドル記号を使用したため、PHP は最初の評価を行います。

$this-> = $titlename;
//     ^ nothing

証明するために、最初に を宣言した場合$reporttitle = 'reporttitle'、それは機能します。


また、変数はプライベートではなく、PHP4var構文を使用したためパブリックであることに注意してください。

var $reporttitle = 'TEST';

プライベート変数が必要な場合は、PHP5 アクセス キーワードを使用します。プライベート変数は派生クラスにアクセスできないため、拡張するクラスがある場合はReportsアクセスreporttitleできないことに注意してください。

private $reporttitle = 'TEST';
于 2012-12-26T22:22:31.033 に答える
1
$this->$reporttitle = $titlename;

次のようにする必要があります。

$this->reporttitle = $titlename;
于 2012-12-26T22:21:57.073 に答える