[25-Apr-2018 13:57:20 UTC] Предупреждение PHP: объявление FPDF :: SetDrawColor () должно быть совместимым с tFPDF :: SetDrawColor ($ r, $ g = NULL, $ b = NULL) в /Applications/MAMP/htdocs/squid/lib/card_pdf.php в строке 10
Методы должны иметь последовательные сокращения, особенно в PHP7, где они сделали его более строгим, как я обнаружил. Таким образом, ваш FPDF::SetDrawColor()
должен быть определен именно так
class FPDF{
public function SetDrawColor($r, $g = NULL, $b = NULL){}
}
Вы можете добавить аргументы (я полагаю, но я бы предложил не делать этого), но вы не можете изменить подсказки типа или значения по умолчанию. Публичные методы - это API или интерфейс ваших классов, и поэтому они должны быть согласованы с любыми дочерними элементами, которые присущи этому классу, или реализуют интерфейс, в котором они определены. Так что если у вас есть что-то подобное
public function SetDrawColor($r, $g = '', $b = NULL){}
Он выдаст вам это предупреждение, или если у вас будет что-то вроде этого:
public function SetDrawColor($r){}
Или многие другие варианты этой идеи, PHP предупредит вас, что она не соответствует.
[25-Apr-2018 13:57:20 UTC] Предупреждение PHP: объявление FPDF :: SetFillColor () должно быть совместимым с tFPDF :: SetFillColor ($ r, $ g = NULL, $ b = NULL) в /Applications/MAMP/htdocs/squid/lib/card_pdf.php в строке 10
см. Выше
[25-Apr-2018 13:57:20 UTC] Предупреждение PHP: Объявление FPDF :: SetTextColor () должно быть совместимо с tFPDF :: SetTextColor ($ r, $ g = NULL, $ b = NULL) в /Applications/MAMP/htdocs/squid/lib/card_pdf.php в строке 10 25-Apr-2018 13:57:20 UTC] Предупреждение PHP: Объявление FPDF :: SetDrawColor () должно быть совместимо с tFPDF :: SetDrawColor ($ r, $ g = NULL, $ b = NULL) в /Applications/MAMP/htdocs/squid/lib/card_pdf.php в строке 10
см. Выше
[25-Apr-2018 13:57:20 UTC] PHP устарел: методы с тем же именем, что и их класс, не будут конструкторами в будущей версии PHP; fpdi_pdf_parser содержит устаревший конструктор в /Applications/MAMP/htdocs/squid/lib/FPDI-1.4/fpdi_pdf_parser.php в строке 22 * 1030 *
В PHP 4.x метод __construct
еще не был представлен. В те давние времена конструктор назывался так же, как и класс, поэтому у вас должен быть такой метод:
class fpdi_pdf_parser{
public function fpdi_pdf_parser($foo){ echo $foo; }
}
Какой PHP видит конструктор "старой школы". Я потратил много времени, когда впервые начал работать с PHP (еще в 2008 году), обновляя старые конструкторы, чтобы они были совместимы с PHP 5. Это было забавно, я тоже много на этом заработал ... смеется. Единственное реальное решение - переименовать метод в другое. Я не рассматриваю отключение Deprecated
предупреждений как жизнеспособное решение, но это, конечно, «вариант».
Самый простой способ исправить это (если это конструктор) - просто переименовать его:
class fpdi_pdf_parser{
public function __construct($foo){ echo $foo; }
}
Если это не конструктор, вам нужно придумать логическое имя для метода.
Это, вероятно, потребует некоторого рефакторинга, если это стороннее программное обеспечение, я бы искал его обновленную версию или что-то, что делает его эквивалентом, который является текущим. Если это не код, который вы написали, не стоит тратить время на его рефакторинг, если только не существует жизнеспособных заменителей.
Надеюсь, это поможет.