moduleabstract description - Ppito/zf3-framework GitHub Wiki
Ce module n'a pas de fonctionnement particulier, il a pour but d'aider à la conception des autres modules de l'application. Son rôle est d'éviter la duplication de code inutile. Il vous aidera à concevoir un module avec toutes les informations de base qui vous serons nécessaire, (ex: configuration, autoload, factory, container, ...).
Liste des classes abstraite
Module.php
Cette classe implémente 2 méthodes
- getConfig - référence l'emplacement du fichier de configuration
- getAutoloaderConfig - implément le système d'autoload du module Note : c'est le système d'autoload PSR-4 qui est utilisé
Important : chaque Module devra implémenter les 3 constants MODULE_PATH
, MODULE_NAME
et CONFIG_NAME
.
Les 2 premières permettent de géré le chargement de l'autoload et de la configuration (les définir comme suit), le dernier permet de définir un nom de configuration de module (nom utilisé dans le fichier module.config.php), ce nom dévra être unique avec les autres modules pour ne pas créer de conflit avec les eux.
Exemple :
namespace MyModule;
class Module extends \ModuleAbstract\Module {
const MODULE_PATH = __DIR__;
const MODULE_NAME = __NAMESPACE__;
const CONFIG_NAME = 'my-module';
}
Service\AbstractBase.php
Pour permettre une bonne gestion des services, chaque classe implémente :
- getContainer - le container est la base de l'application, c'est à travers lui que nous pouvons accéder tous les services de l'application
- EventManager - moins indispensable car il est acéssible depuis le container, mais un accesseur direct à été implémenter permettant ainsi un gain d'accès à ce manageur.
- getOptions - chaque module à la possibilité avoir ses propres options, des accesseur ont été implémenter afin de faciliter cette gestion.
Factory\Base.php
Cette Facotry a pour but de permettre l'invocation des services en assurant de fournir le container et les options aux services lors de l'invocation de ce dernier.
Toutefois, il est important de définir une classe Factory par module afin de permettre la définission du nom du paramètre de configuration de votre module.
Exemple :
namespace MyModule\Factory;
use MyModule\Module;
use Zend\ServiceManager\Factory\FactoryInterface;
class Base extends \ModuleAbstract\Factory\Base implements FactoryInterface {
const CONFIG_NAME = Module::CONFIG_NAME;
}