PHP делает класс V7 совместимым

У меня есть старый файл класса, который после обновления моей версии PHP до 7 теперь сообщает об ошибках.

«Методы с тем же именем, что и их класс, не будут
конструкторы в будущей версии PHP »

Я прочитал несколько руководств и попробовал то, что было предложено:

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& но похоже что больше не поддерживается.

Может кто-нибудь помочь мне сделать мой класс совместимым, спасибо!

-1

Решение

Ваша подпись конструктора старого стиля не соответствует __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);
}
2

Другие решения

Отсутствует только строитель.

Но создание нового объекта, расширяющего старую концепцию, было бы больше в будущее. Также, например если обновления будут следовать за старым материалом. 🙂

class tFPDFv7
extends tFPDF
{
public function __construct($orientation='P', $unit='mm', $size='A4') {
$this->tFPDF($orientation, $unit, $size);
}
}
1

По вопросам рекламы [email protected]