Module Class Autoloading

Module class autoloading enables the automatically proceeding or loading of classes stored in a prescribed way in WHASOLS modules. It is just given as a tool to make it quite easier for module developers to create helper classes. They can then call on and load these modules throughout the WHASOLS product from modules, hooks, and other custom integration code.

Note: This is not taken or intended to be a replacement for modern PHP development practices like the use of Composer or more complex custom-made autoloaders.

Supported Module Types

The following module types support autoloading:

  • Addon
  • Fraud
  • Gateway
  • Registrar
  • Report
  • Server
  • Widget

Usage

Store your class file(s) in a lib subdirectory that is relative to the deployed module. For example:

/path/to/whasols/modules/{ModuleType}/{ModuleName}/lib/{ClassName}.php

Add the module namespace to the top of your class file(s):

namespace WHASOLS\Module\{ModuleType}\{ModuleName};

To invoke the class, add the use statement and invoke it normally:

use WHASOLS\Module\{ModuleType}\{ModuleName}\{ClassName};

$hello = new {ClassName}();

Note: For module types by default that do not have a directory per module (for example, gateways and reports), you will need to create the directory and subdirectory lib to use autoloading.

Example Usage

The following example demonstrates module namespace autoloading for a class named HelloWorld within the Sample Addon Module module:

/modules/addons/sample_addon_module/lib/HelloWorld.php

namespace WHASOLS\Module\Addon\SampleAddonModule;

/**
 * Hello World Class
 *
 * @copyright Copyright (c)
 * @license http://www.whasols.com/license/ WHASOLS Eula
 */
class HelloWorld {

    /**
     * Print hello world.
     */
    public function printHello()
    {
        print 'Hello World';
    }

}

/modules/addons/sample_addon_module/sample_addon_module.php

use WHASOLS\Module\Addon\SampleAddonModule\HelloWorld;

// Other code goes here...

function sample_addon_module_output() {
    $hello = new HelloWorld();
    $hello->printHello();
}