У меня есть старый файл класса, который после обновления моей версии 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& но похоже что больше не поддерживается.
Может кто-нибудь помочь мне сделать мой класс совместимым, спасибо!
Ваша подпись конструктора старого стиля не соответствует __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);
}
Отсутствует только строитель.
Но создание нового объекта, расширяющего старую концепцию, было бы больше в будущее. Также, например если обновления будут следовать за старым материалом. 🙂
class tFPDFv7
extends tFPDF
{
public function __construct($orientation='P', $unit='mm', $size='A4') {
$this->tFPDF($orientation, $unit, $size);
}
}