MVC
Le PHPDevShell fournit une excellente structure MVC standard pour vous permettre de garder votre code propre et organisé. Vous pouvez utiliser votre propre style MVC préféré ou le nôtre, ce qui est pratique. Le respect de la formule permettra aux autres de se sentir à l'aise avec votre code.
La structure MVC
Il convient de noter que PHPDevShell partage ses ressources et ses objets avec tout ce qui se trouve dans sa structure, ceux-ci sont généralement divisés en groupes d'objets et sont disponibles sous la forme (Il existe 7 objets principaux que vous pouvez utiliser dans PHPDevShell pour vous aider dans le développement, à savoir) :
- $this->db
- $this->navigation
- $this->security
- $this->template
- $this->user
- $this->tagger
- $this->core
vous disposez également d'une gamme de fonctions PU_utility. La plupart des méthodes de PHPDevShell racontent une histoire comme celle-ci :
- $this->user->isRoot(), $this->user->belongToGroup() or $this->navigation->createMenuId()
Jetez un oeil à la documentation de l'API pour voir un aperçu des classes et de leurs méthodes, recherchez spécifiquement les 7 objets principaux. À l'intérieur d'un plugiciel, vous disposez de plusieurs dossiers pour vous aider dans votre structure, à savoir :
config
Le dossier config contient le fichier de configuration XML des plugiciels pour l'installation et la désinstallation d'un plugiciel.
controllers
Il s'agit du conteneur des contrôleurs qu'un élément de menu appellera pour exécuter votre script. Le contrôleur est conçu comme un point d'exécution utilisant des logiques de base pour rassembler des requêtes/modèles et des vues. À l'aide de l'interface utilisateur du menu Admin, vous pouvez affecter un élément de contrôleur à un menu et il sera disponible à partir du système de navigation pour être exécuté.
Un Controller peut être nommé n'importe quoi, cela peut être aussi simple que :
controllers/some-item.php |
À l'intérieur du contrôleur, vous commenceriez par ceci :
- /**
- * CONTROLLER: Lisez-moi simple pour présenter MVC dans les plugiciels PHPDevShells.
- *
- * @author Sylvain Maltais
- * @return string
- */
- class ReadMeExample extends PHPDS_controller
- {
-
- /**
- * Nous commençons toujours par remplacer la méthode execute du contrôleur.
- * @author Sylvain Maltais
- */
- public function execute()
- {
- /* Un titre par défaut. */
- $this->template->heading(_('Oooh un exemple de plugiciel'));
- /* Quelques informations concernant ce noeud. */
- $this->template->info(_('The best way to learn is to learn by example.'));
-
- /* Tout votre code... */
-
- /* invokeQuery est le modèle de PHPDevShell. */
- /* Chaque requête est dans sa propre classe. */
- /* Il peut y avoir un modèle pour chaque contrôleur. Le modèle se trouvera donc sous ExamplePlugin/models/readme-example.query.php */
- $some_data_call = $this->db->invokeQuery('ExamplePlugin_someData');
-
- /* Voici comment charger un plugiciel, dans ce cas, nous avons enregistré la classe de plugiciel «views» et l'appelons. */
- /* Ce plugiciel utilise Smarty pour séparer le HTML du code. */
- $view = $this->factory('views');
-
- /* Nous définissons maintenant certaines variables dans la VUE de PHPDevShell, cela divise le code et le HTML. */
- $view->set('some_variable', $some_data_call);
- $view->set('developer_name', 'Sylvain Maltais');
-
- /* Vue de sortie. */
- /* La vue porte également le même nom que le contrôleur, vous pouvez trouver la vue dans ExamplePlugin/views/readme-example.tpl */
- $view->show();
- }
- }
models
Le modèle est un objet de données obligatoire. Par exemple, si nous avons besoin des noms de tous mes élèves de 3e année, nous appellerons un modèle via une requête pour demander ces données, le modèle me les renverra. Les modèles ne doivent pas nécessairement être une requête de base de données, il peut s'agir de n'importe quel type de données provenant de n'importe quelle source. En général, les modèles sont appelés avec :
- /* invokeQuery peut être utilisé n'importe où en réalité, contrôleur, classes, modèles. */
- $this->db->invokeQuery('ExamplePlugin_editExampleQuery', 10);
- /* Le 10 signifie simplement que nous appelons l'ID 10. */
Le modèle sera chargé paresseusement une fois nécessaire. Le modèle avec tous ses objets est nommé en relation avec son contrôleur appelé "some-item.php" pourrait avoir un modèle dans :
models/some-item.query.php |
et ont généralement des objets modèles comme ceux-ci :
- class ExamplePlugin_editExampleQuery extends PHPDS_query {
- protected $sql = "SELECT id, example_name, example_note, alias FROM _db_ExamplePlugin_example WHERE id = %u";
- protected $singleRow = true;
- }
views
Les vues constituent la mise en page finale du navigateur. PHPDevShell tente de conserver cette dernière dans son format HTML le plus pur en utilisant un plugiciel appelé Smarty. Là encore, vous pouvez créer votre propre plugiciel de vues, mais c'est une manière très propre de procéder. Si cela ne vous dérange pas de mélanger HTML et PHP, vous pouvez simplement appeler votre propre fichier de vue PHP à partir de votre contrôleur, mais c'est vraiment à vous de décider.
Les vues sont également chargées en différé par rapport au nom du contrôleur. Une vue typique ressemblera à ceci :
views/some-item.tpl |
il sera appelé depuis le contrôleur comme dans l'exemple de contrôleur ci-dessus et ressemblera à ceci :
- <h2>Bonjour {$developer_name}, bienvenue dans l'exemple de plugiciel</h2>
includes
Cela peut contenir des classes d'aide pour aider votre contrôleur ou vos modèles à réaliser des tâches répétitives, une classe typique ressemblera à ceci et peut également être chargée paresseusement. Le nom de la classe comme "myClass" doit être le même que le nom du fichier dans le dossier d'inclusions, comme myClass.class.php.
une classe peut également être enregistrée dans le fichier de configuration des plugiciels. Cela présente de grands avantages, n'importe quel plugiciel peut partager cette classe avec une grande facilité, et une classe peut être remplacée par une classe du même nom et d'un rang plus élevé dans le registre.
Une classe typique commencera comme ceci :
Cela peut ensuite être appelé de n'importe où en utilisant :
- $myClass = $this->factory('myClass');
- $myClass->example();
resources
Le dossier Resources est destiné aux plugiciels appellant des classes ou des API tierces. Par exemple, PHPDevShell utilise l'éditeur wysiwyg TinyMCE. Bien évidemment, PHPDS utilise ses propres classes pour tout initialiser, mais le TinyMCE en JavaScript lui-même est appelé depuis le dossier resource. Cela signifie que le téléchargement de TinyMCE a été copié dans le dossier resources.
images
Contient simplement toutes vos images, logos et icônes du panneau de contrôle liés à votre plugiciel.
language
Le language contient des traductions et des extractions de langues fictives pour vos plugiciels.