Difference between revisions of "Module Class Autoloading"

From WHMCS Documentation

(Created page with "Module class autoloading enables the automatic loading of classes when stored in a prescribed way within WHMCS modules. It is provided as a tool that makes it easier for modu...")
(No difference)

Revision as of 20:44, 28 July 2016

Module class autoloading enables the automatic loading of classes when stored in a prescribed way within WHMCS modules.

It is provided as a tool that makes it easier for module developers to create helper classes that they can call on and load throughout the WHMCS product from modules, hooks and other custom integration code.

This is not intended to be a replacement for modern PHP development practices, (ie. 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

Locate your class file(s) in a sub-directory named 'lib' relative to the deployed module. For example:

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

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

{source lang="php"} namespace WHMCS\Module\{ModuleType}\{ModuleName}; {/source}

To invoke the class, simply add the use statement and invoke as normal:

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

$hello = new {ClassName}();
For module types that do not have a directory per module by default (for example gateways and reports), you will need to create the directory and sub-directory 'lib' to utilise autoloading.

Example Usage

The following example demonstrates use of the module namespace autoloading for a class named 'HelloWorld' within the addon module 'Sample Provisioning Module':

Filename: /modules/addons/sample-provisioning-module/lib/HelloWorld.php

namespace WHMCS\Module\Addon\SampleProvisioningModule;

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

    public function printHello()
    {
        print 'Hello World';
    }

}

Filename: /modules/addons/sample-provisioning-module/sample-provisioning-module.php

use WHMCS\Module\Addon\SampleProvisioningModule\HelloWorld;

$hello = new HelloWorld();
$hello->printHello();