Magento – How Are Magento Lib Files Loaded

classextensionsmodel

On a mage site using sagepay, inside the Sagepaysuite model there is a call to a class

file: Ebizmarts/SagePaySuite/Model/Api/Payment.php

   $xml = new Ebizmarts_Simplexml_Element('<customer />');

The class 'Ebizmarts_Simplexml_Element' can be found in – root/lib/Ebizmarts/Simplexml/Element.php

   class Ebizmarts_Simplexml_Element extends Varien_Simplexml_Element

I can see from checking apache logs that this cannot be found

   Class 'Ebizmarts_Simplexml_Element' not found in <path to payment.php

I assume an include of this file before the class is called would work but this cannot be best practice and may not be enough if the class is required in other areas of the extension that I have not yet noticed. How exactly are lib files loaded in Magento and any ideas why it is not getting it in this case.

Best Answer

Theoratical lib is part of the include_path and the autoloader searches for the file in the include_path. The question is, why does your installation not.

I would think you have turned on the compiler (DON'T DO THIS. REALLY!).

If this is not the case, maybe you have Aoe_ClassPathCache installed, or something similar?

Whatever you have installed, this should not happen and I'm sure, in a standard magento this doesn't happen.

Related Topic