TCPDF集成Codeigniter构造函数仅使用默认参数

时间:2014-10-06 22:17:14

标签: codeigniter parameters constructor integration tcpdf

我已经整合了这个库。我创建了类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类)的构造函数。

1 个答案:

答案 0 :(得分: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()。但请确保数组值的顺序正确。