wakdev / slash-cms

CMS Systems
GNU General Public License v3.0
5 stars 5 forks source link

EVO Automatisation des models et des views dans le Controller #47

Open rbcreation opened 11 years ago

rbcreation commented 11 years ago

SUGGESTION : Automatiser les includes des models et des views ainsi que leur instanciation respective dans sl_controller et sla_controller.

BUT : Ne plus inclure et instancier à chaque fois les models et les views des modules.

Pour faire cela, il faut :

Exemple avec un module "sl_secure" : models/sl_secure_form.model.php views/default/sl_secure.view.php views/default/sl_secure_form.view.php sl_secure.controller.php

public function load_models() {

$models = sl_module::include_files($this->module["url"]."models/");

foreach ($models as $value) { $model_name = explode(".", $value); $model = $model_name[0]."_model"; $this->models[$model_name[0]] = new $model($this); }

}

public function load_views() {

$views= sl_module::include_files($this->module["url"]."views/".$this->config["template_name"]."/");

foreach ($views as $value) { $view_name = explode(".", $value); $view = $view_name[0]."_view"; $this->views[$view_name[0]] = new $view($this); }

}

public function include_files($dir) { $filenames = array();

if (is_dir($dir)) { if ($dir_handle = opendir($dir)) { while (($file = readdir($dir_handle)) !== false) { if (is_file($dir.$file)) { include ($dir.$file); array_push($filenames, $file); } } closedir($dir_handle); } } return $filenames; }

Et pour la totale automatisation on remplace par exemple $this->views["sl_secure_form"] par $this->views[$this->module["name"]."_form"]

wakdev commented 11 years ago

J'aime beaucoup la finalité, qui peux même s'écrire par exemple : $this->views["form"]->render(); pour l'affichage du formulaire et $this->views["list"]->render(); pour le listing principal

Par contre :

D'autres avis sur le sujet ?

rbcreation commented 11 years ago
wakdev commented 11 years ago

Je vais réfléchir à un système pratique et sécurisé sur la base de ta réflexion ;-)

rbcreation commented 11 years ago

Cool! J'ai hâte de voir ca. Pour les classes inluses dans le sl_functions, j'ai fait pareil. Un ptit script qui récupère les fichiers et qui les inclus automatiquement.

wakdev commented 11 years ago

Je pense voir pour inclure les classes avec l'autoload si tu connais. C'est pratique, et ca permet de n'inclure que les classes utilisées ;-)

wakdev commented 11 years ago

Tiens, je viens de le mettre en place : https://github.com/wakdev/slash-cms/commit/dfd7c683fde05313aff504ccfa05e44ff2253217

rbcreation commented 11 years ago

De souvenir, je crois que dans le tuto sur la POO dans le site du zero, ils en parlent.

rbcreation commented 11 years ago

C'est bien ce que tu as fait. Ce sera la même manip pour les views et les models ?

wakdev commented 11 years ago

Oui pourquoi pas, je ne me suis pas penché encore sur le problème ^^