2017-05-19 2 views
-1

私は7に私のPHPのバージョンを更新するので、今すぐエラーを報告すること、古いクラスファイルがあります。 「自分のクラスと同じ名前を持つメソッドは、PHPの将来のバージョンで コンストラクタではありません」PHP作りクラスV7互換

私はいくつかのガイドを読んでいると私は提案されたものを試してみました:

https://cweiske.de/tagebuch/php4-constructors-php7.htm

現在、編集したクラスの変更は次のとおりです。

class tFPDF { 

    public function __construct() { 

    } 

    var $unifontSubset; 
    var $page;    // current page number 
    .... 
    var $PDFVersion;   // PDF version number 

    function tFPDF($orientation='P', $unit='mm', $size='A4') { 

      $this->StdPageSizes = array('a4'=>array(595.28,841.89)); 

    } 

    function _getpagesize($size) { 

      $size = strtolower($size); 
      if(!isset($this->StdPageSizes[$size])) 
       $this->Error('Unknown page size: '.$size); 
      } 

    } 

    function AddPage($orientation='', $size=''){ 

      $size = $this->_getpagesize($size); 

    } 

} 

次にコードベースでは

$ PDF->のaddPage( 'P'、 'A4');:彼は次のように呼ばれています

これは、エラーがスローされます:不明なページサイズを:

A4だから、実行されていないか、または読み取り中の$ this - を設定し、最初のクラスが>プロパティをStdPageSizesようです。これはPHPの古いバージョンでうまくいきましたので、私は基本的なステップを欠いていると推測しています。

私はまた、PHP &で動作する可能性があるクラスのアップデート版を見てきましたが、それはもはやサポートされているようですありません。

誰も私は私のクラスは、compatiable作るのを助けることができ、感謝!

+2

慎重 – Pete

答えて

2

旧式のコンストラクタシグネチャが__constructシグネチャと一致しないため、コードがコンストラクタを呼び出すときに$this->StdPageSizes配列が初期化されません。

あなたは__construct方法に古いコンストラクタコードを移動することによってこの問題を解決することができます:あなたのコンストラクタのコードを繰り返すことから保つために

public function __construct($orientation = 'P', $unit = 'mm', $size = 'A4') 
{ 
    $this->StdPageSizes = array('a4' => array(595.28, 841.89)); 
} 

、あなたの古いコンストラクタから__constructメソッドを呼び出すことができます。

public function tFPDF($orientation = 'P', $unit = 'mm', $size = 'A4') 
{ 
    self::__construct($orientation, $unit, $size); 
} 
+0

が本当に解決策を感謝し、あなたのリンクの「本当の修正を」セクションを読んで、私はこの上に勉強する必要がある、私は数時間のために困惑していました –

1

だけコンストラクタがありません。

しかし、古い概念を拡張し、新しいオブジェクトを作成することは、将来へのより多くのだろう。例えば、古いものが更新された場合。 :)

class tFPDFv7 
    extends tFPDF 
{ 
    public function __construct($orientation='P', $unit='mm', $size='A4') { 
     $this->tFPDF($orientation, $unit, $size); 
    } 
} 
関連する問題