Let me count the ways.
There are no autoLoaders, no namespaces, no PSR standards or traits.
Phpfox provides methods for loading most scripts as libraries, services, and components.
Other script are included or required via standard php.
Each library, service or component has a dot notation class Id.
EG “phpfox.image.helper” or “image.helper” refer to /include/library/phpfox/image/helper.class.php
Requires (includes) a library script but does not instantiate the object
Instantiates an object.
Instances are maintained in an internal static list self::$_aObject, where the (hash) key to this list is
md5($sClass . serialize($aParams));
This means that Phpfox::getLib('cdn') is a different instance than Phpfox::getLib('cdn',array('MyParam'⇒$MyValue)
If parameters are present they are passed to the constructor.
If the class has a method called getInstance, we have a factory method, and each successive call to getLib will return a new instance.
Requires (includes) a library script and instantiates the object
It does this by calling getLib to load a script and getObject to get the instance.
BUT. In between, it messes with the library names, prepending, removing a “phpfox” prefix and hard-coded special cases. More on this later.
Not the “normal” way for phpfox to obtain a class instance. No conventions we can see.
It is up to the author to ensure a class has been loaded before executing.
The bulk of these are used in third party libraries. For example:
$oGetId3 = new getID3;
$purifier = new HTMLPurifier($config);
* Module service mass callback, hasCallback use the new keyword to instantiate “on the fly”.
Here the fox does not use it's own loaders. They have hard-coded access to the module folder.
So any custom overrides will have to take these into account.
These are handed off to Phpfox_Module::getService
Locates a service in the file system, includes, and instantiates via Phpfox::getObject
There is a story here.
Consider loading the following services:
This is the crux of the issue using autoLoaders. Phpfox has devised a system where it is impossible to map a dot-notation class identifier to a real class by name alone.
We did not look into these.