Wednesday, July 27, 2011

Prado and installing PHPExcel - Auto Loading bug

Well this was a headache and then some.

The problem is Prado has a Auto Loading process that can cause 3rd party or additional libraries to break and act strange if they also have a Auto Loading process.

The Solution is to turn off Prado's Auto Loading process, Load the 3rd party/Additional library and then turn Prado's Auto Loading process back on.

Here is what it looks like: (In this example I'm using the namespace instead of the path alias)


$phpExcelPath = Prado::getPathOfNamespace('Application.Core.php_excel.Classes');

// Disable Prado Auto Loading process
spl_autoload_unregister(array('Prado','autoload'));

// Add PHP Excel
require_once($phpExcelPath.'/PHPExcel.php');
require_once($phpExcelPath.'/PHPExcel/Writer/Excel2007.php');

// Do PHP Excel stuff here

// Reload Prado Auto Loading process
spl_autoload_register(array('Prado','autoload'));



Reference: http://www.ramirezcobos.com/2010/11/05/how-to-use-phpexcel-with-yii/
They are using YII but the process is very similar

There is a discussion here for possibly more information regarding this issue.