PHP警告:FPDF声明

时间:2018-04-25 20:15:26

标签: php fpdf

我正在尝试解决所有这些错误,但无论我做什么都不起作用。

[25-Apr-2018 13:57:20 UTC] PHP警告:FPDF :: SetDrawColor()的声明应与tFPDF :: SetDrawColor($ r,$ g = NULL,$ b = NULL)兼容第10行/Applications/MAMP/htdocs/squid/lib/card_pdf.php

[25-Apr-2018 13:57:20 UTC] PHP警告:FPDF :: SetFillColor()的声明应与tFPDF :: SetFillColor($ r,$ g = NULL,$ b = NULL)兼容第10行/Applications/MAMP/htdocs/squid/lib/card_pdf.php

[25-Apr-2018 13:57:20 UTC] PHP警告:FPDF :: SetTextColor()的声明应与tFPDF :: SetTextColor($ r,$ g = NULL,$ b = NULL)兼容第10行的/Applications/MAMP/htdocs/squid/lib/card_pdf.php PHP警告:FPDF :: SetDrawColor()的声明应与/ Applications / MAMP中的tFPDF :: SetDrawColor($ r,$ g = NULL,$ b = NULL)兼容第10行的/htdocs/squid/lib/card_pdf.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));
    }
}

[25-Apr-2018 13:57:20 UTC] PHP不推荐使用:与其类同名的方法将不会是PHP未来版本中的构造函数; fpdi_pdf_parser在第22行的/Applications/MAMP/htdocs/squid/lib/FPDI-1.4/fpdi_pdf_parser.php中有一个弃用的构造函数

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 :(得分:1)

  

[25-Apr-2018 13:57:20 UTC] PHP警告:FPDF :: SetDrawColor()的声明应与tFPDF :: SetDrawColor($ r,$ g = NULL,$ b = NULL)兼容第10行/Applications/MAMP/htdocs/squid/lib/card_pdf.php

方法必须有一致的declerations特别是在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)兼容第10行/Applications/MAMP/htdocs/squid/lib/card_pdf.php

见上文

  

[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 on line 10 25-Apr-2018 13:57:20 UTC] PHP警告:FPDF :: SetDrawColor()的声明应该与tFPDF :: SetDrawColor兼容($第10行的/Applications/MAMP/htdocs/squid/lib/card_pdf.php中的r,$ g = NULL,$ b = NULL)

见上文

  

[25-Apr-2018 13:57:20 UTC] PHP不推荐使用:与其类同名的方法将不会是PHP未来版本中的构造函数; fpdi_pdf_parser在第22行的/Applications/MAMP/htdocs/squid/lib/FPDI-1.4/fpdi_pdf_parser.php中有一个弃用的构造函数

在PHP 4.x中,尚未引入__construct方法。在旧的那些日子里,构造函数的命名与类相同,所以你必须有这样的方法:

class fpdi_pdf_parser{
     public function fpdi_pdf_parser($foo){ echo $foo; }
}

哪个PHP认为是#34;旧学校"构造函数。我花了很多时间才开始使用PHP(早在2008年),更新旧的构造函数以兼容PHP 5,很有趣,我赚了很多钱也做了......哈哈。唯一真正的解决方案是将方法重命名为其他方法。我不认为关闭Deprecated警告作为可行的解决方案,但它是一个"选项"当然。

解决此问题的最简单方法(如果它是构造函数)只是重命名它:

class fpdi_pdf_parser{
     public function __construct($foo){ echo $foo; }
}

如果它不是构造函数,那么您必须为该方法提供一些逻辑名称。

这可能需要进行一些重构,如果这是第三方软件,我会寻找它的更新版本,或者它的等同于当前的东西。如果它不是您编写的代码,那么除非没有可行的替代品,否则不值得花时间重构它。

希望有所帮助。

答案 1 :(得分:0)

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