TCPDF集成Codeigniter构造函数只使用默认参数
问题描述:
我已经集成了该库。我创建了类Pdf:TCPDF集成Codeigniter构造函数只使用默认参数
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类)。
答
您当然必须将参数传递给父类。请注意,TCPDF需要一个单独的参数列表,而不是一个数组。解决的方法之一是用call_user_func_array
的invokation:
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()
。但请确保数组值的顺序正确。
谢谢,作品完美 – user2908480 2014-10-07 02:30:12