Предупреждение PHP: Объявление FPDF - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь исправить все эти ошибки, но независимо от того, что я делаю, это не работает.

[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: Объявление 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

class FPDF extends tFPDF {}

{private $ _encoding= 'UTF-8';

var $angle=0;

public function Rotate($angle, $x=-1, $y=-1)
{
    if($x==-1)
        $x=$this->x;
    if($y==-1)
        $y=$this->y;
    if($this->angle!=0)
        $this->_out('Q');
    $this->angle=$angle;
    if($angle!=0)
    {
        $angle*=M_PI/180;
        $c=cos($angle);
        $s=sin($angle);
        $cx=$x*$this->k;
        $cy=($this->h-$y)*$this->k;
        $this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy));
    }
}

[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 * ​​1013 *

class fpdi_pdf_parser extends pdf_parser {

/**
 * Pages
 * Index beginns at 0
 *
 * @var array
 */
var $pages;

/**
 * Page count
 * @var integer
 */
var $page_count;

/**
 * actual page number
 * @var integer
 */
var $pageno;

/**
 * PDF Version of imported Document
 * @var string
 */
var $pdfVersion;

/**
 * FPDI Reference
 * @var object
 */
var $fpdi;

/**
 * Available BoxTypes
 *
 * @var array
 */
var $availableBoxes = array('/MediaBox', '/CropBox', '/BleedBox', '/TrimBox', '/ArtBox');

/**
 * Constructor
 *
 * @param string $filename  Source-Filename
 * @param object $fpdi      Object of type fpdi
 */
function fpdi_pdf_parser($filename, &$fpdi) {
    $this->fpdi =& $fpdi;

    parent::pdf_parser($filename);

    // resolve Pages-Dictonary
    $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);

    // Read pages
    $this->read_pages($this->c, $pages, $this->pages);

    // count pages;
    $this->page_count = count($this->pages);
}

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018
PHP Strict Standards: Declaration of FPDF::SetDrawColor() should be compatible with tFPDF::SetDrawColor($r, $g = NULL, $b = NULL) in /Applications/MAMP/htdocs/squid/lib/card_pdf.php on line 11

 <?php


  $cwd = getcwd();

  chdir( dirname(__FILE__) );

  require 'tfpdf/tfpdf.php';

class FPDF extends tFPDF 
{
    private $_encoding = 'UTF-8';

    var $angle=0;

    public function Rotate($angle, $x=-1, $y=-1)
    {
        if($x==-1)
            $x=$this->x;
        if($y==-1)
            $y=$this->y;
        if($this->angle!=0)
            $this->_out('Q');
        $this->angle=$angle;
        if($angle!=0)
        {
            $angle*=M_PI/180;
            $c=cos($angle);
            $s=sin($angle);
            $cx=$x*$this->k;
            $cy=($this->h-$y)*$this->k;
            $this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm', $c, $s, -$s, $c, $cx, $cy, -$cx, -$cy));
        }
    }
0 голосов
/ 25 апреля 2018

[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; }
}

Если это не конструктор, вам нужно придумать логическое имя для метода.

Это, вероятно, потребует некоторого рефакторинга, если это стороннее программное обеспечение, я бы искал его обновленную версию или что-то, что делает его эквивалентом, который является текущим. Если это не код, который вы написали, не стоит тратить время на его рефакторинг, если только не существует жизнеспособных заменителей.

Надеюсь, это поможет.

...