【问题标题】:TCPDF integration Codeigniter constructor only use default parametersTCPDF 集成 Codeigniter 构造函数只使用默认参数
【发布时间】:2014-12-01 06:34:11
【问题描述】:

我已经集成了库。我创建了 Pdf 类:

require_once dirname(__FILE__) . '/tcpdf/tcpdf.php';

class Pdf extends TCPDF { 
    public function __construct($params) { 
        parent::__construct(); 
    }
} 

但是当我用其他参数调用构造函数时,构造函数只使用默认参数。

$this->load->library('pdf');
$pdf = new Pdf('L', 'mm', array(216, 330), true, 'UTF-8', false);

但是,如果我更改 TCPDF 的类 Pdf 就可以了。

$this->load->library('pdf');
$pdf = new TCPDF('L', 'mm', array(216, 330), true, 'UTF-8', false);

问题是我想更改标头,它必须创建一个新类,该类使用新的标头信息扩展 TCPDF。而且我不能用自定义参数调用这个类(Pdf类)的构造函数。

【问题讨论】:

    标签: codeigniter parameters constructor integration tcpdf


    【解决方案1】:

    您当然必须将参数传递给父类。请注意,TCPDF 需要一长串单独的参数,而不是数组。解决此问题的一种方法是调用 call_user_func_array:

    class Pdf extends TCPDF {
        public function __construct() { 
            call_user_func_array('parent::__construct', func_get_args());
        }
    }
    

    请注意,$params 参数已从 Pdf::__construct 中删除,因为它无论如何都没有意义。相反,func_get_args() 将收集任意数量的参数并将它们传递给父构造函数。

    当然,如果$params 是一个已经包含要传递给TCPDF 的值的数组,您可以使用它来代替func_get_args()。但请确保数组值的顺序正确。

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2016-12-16
      相关资源
      最近更新 更多