Pimcore – Ajouter un dossier dans website/lib
Dans Pimcore, on peut avoir besoin de se créer un dossier pour y installer sa logique métier. Voici la démarche à suivre.
Dans Pimcore, nous positionnons la logique métier dans website/lib.
Ce dossier contient 2 répertoire :
– Object
– Website
Toutefois on peut avoir envie d’ajouter un nouveau répertoire.
Or les classes qui seront dans ce dossier génèreront une anomalie quand on instanciera une de ces classes.
Nous allons voir comment solutionner cela.
Nous ajoutons le dossier « Com » dans website/lib.
Créons le fichier « Autoloader.php » dans website/lib/Com avec le contenu avec le contenu suivant :
<?php Com_Autoloader::Register(); class Com_Autoloader { public static function Register() { if (function_exists('__autoload')) { spl_autoload_register('__autoload'); } return spl_autoload_register(array('Com_Autoloader', 'Load')); } public static function Load($pClassName){ if ((class_exists($pClassName,FALSE)) || (strpos($pClassName, 'Com') !== 0)) { return FALSE; } $pClassFilePath = COM_ROOT . str_replace('_',DIRECTORY_SEPARATOR,$pClassName) . '.php'; if ((file_exists($pClassFilePath) === FALSE) || (is_readable($pClassFilePath) === FALSE)) { return FALSE; } require($pClassFilePath); } }
Nous allons maintenant créer « Com.php » à la racine de website/lib :
<?php if (!defined('COM_ROOT')) { define('COM_ROOT', dirname(__FILE__) . '/'); require(COM_ROOT . 'Com/Autoloader.php'); } class Com { }
Il nous maintenant inclure Com.php, nous allons ouvrir le fichier pimcore/config/startup.php et AVANT les lignes :
register_shutdown_function("Pimcore::shutdownHandler"); Pimcore_Event::register("pimcore.shutdown", array("Pimcore", "shutdown"), array(), 999);
Nous ajoutons ce simple include :
include_once ('Com.php');
Et voilà, nous pouvons désormais créer autant de classe dans le dossier website/lib/Com et les instancier avec succès.
Attention : Lors de mise à jour automatique de Pimcore, l’include dans le fichier startup.php peut être supprimé, il faudra le rajouter de nouveau dans ce cas là.