2014-10-06 103 views
2

我已经集成了该库。我创建了类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类)。

回答

1

您当然必须将参数传递给父类。请注意,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()。但请确保数组值的顺序正确。

+0

谢谢,作品完美 – user2908480 2014-10-07 02:30:12