Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

De quel origine est getModuleList


Sujet :

MkFramework

  1. #1
    Membre confirmé
    De quel origine est getModuleList
    Salut,

    Tout d'abord, Je viens de mettre à jour le Builder avec la nouvelle version et encore une fois tu déchires...

    Venons en au sujet, je reprends dans un vieux projet des modules que j'avais créé y'a quelques années. L'un de ces modules exploite la fonction "getModuleList"

    J'ai un doute sur l'origine de cette fonction, je ne sais plus si elle de moi ou de toi , car je ne l'a trouve pas dans la dernière mouture du framework.

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    /**
             * Retourne toutes les actions public de chacun des modules
             * @param array $tExclusion nom des modules à exclure de la liste
             * @return array
             */
           public static function getModuleList($tExclusion=  array()) {
               $tModule=array();
     
                $oDir=new _dir('../module');
                //recuperation liste objet repertoires
                $tDir=$oDir->getListDir();
                foreach($tDir as $oDirModule){
                        $tMethodes=array();
                        //Si l'un des modules termine par Trash on l'ignore
                        if(substr($oDirModule->getName(),-5)=='Trash'){ continue ; }
                        $sModuleName= 'module_'.$oDirModule->getName();                 
     
                        //on exclue le/les modules que l'on veut ignorer
                        if(in_array($sModuleName,$tExclusion)){
                                continue;
                        }
                        $sNameModule = substr($sModuleName,7);
                        //on instancie
                        $oModule=new $sModuleName();
                        //on demande la liste des methodes public			
                        $tMethods=get_class_methods($oModule);                    
                        foreach($tMethods as $sMethod){
                                //on exclue les methodes __get, __set
                                if(substr($sMethod,0,2)=='__'){ continue ; }
     
                                //on garde que les methodes commencant par _ (signe des actions) 
                                if(substr($sMethod,0,1)!='_'){ continue ; }
     
                                $tMethodes[]=$sNameModule.'::'.substr($sMethod,1);
                        }
                        $tModule[$sModuleName]=$tMethodes;                    
                }
               return $tModule;
           }


    Elle se trouvait être pour ma part dans la class_root.php.

    Si ce n'est pas une de tes conceptions je dois tout de même l'exploiter pour mon futur code et j'ai toujours un trou de mémoire sur comment surcharger une class afin de ne pas parasiter une source.

    Peux-tu m'apporter tes lumières

    Merci,
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  2. #2
    Rédacteur

    Oui je le retrouve pas non plus

    si c'est dans _root vous pouvez faire un
    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    class maSurchargeRoot extends _root{
     
    }


    je viens de regarder tout est au pire protected (sauf ma methode loadAutoload() )
    mais sinon rien de bloquant

    donc
    1. vous creer votre classe faisant un extends
    2. dans votre projet vous remplacez new _root par new maSurchargeRoot


    En regardant le code, vous n'en avez plus besoin: c'est utiliser pour le builder pour obenir les actions du module afin de faciliter le formulaire de création du menu

    C'est remplacé par:

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    $tModule=module_builder::getTools()->getListModule();
    $tModuleAndMethod=array();
    foreach($tModule as $oModule){
    	$sModuleName=$oModule->getName();
     
    	include module_builder::getTools()->getRootWebsite().'module/'.$sModuleName.'/main.php';
     
    	$tMethods=get_class_methods('module_'.$sModuleName);
    	foreach($tMethods as $i => $sMethod){
    		if($sMethod[0]!='_' or substr($sMethod,0,2)=='__'){ 
    			unset($tMethods[$i]);
    		}
    	}
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre confirmé
    Salut,

    Merci, en effet c'est dans le builder :

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public function getListModule() {
    		$oDir = new _dir(_root::getConfigVar('path.generation') . _root::getParam('id') . '/module/');
    		$tDir = $oDir->getListDir();
    		$tNewDir = array();
    		foreach ($tDir as $oModule) {
    			$sModuleName = $oModule->getName();
    			if (in_array($sModuleName, array('menu', 'builder', 'example', 'exampleembedded'))) {
    				continue;
    			}
    			if (!file_exists(module_builder::getTools()->getRootWebsite() . 'module/' . $sModuleName . '/main.php')) {
    				continue;
    			}
     
    			$tNewDir[] = $oModule;
    		}
    		return $tNewDir;
    	}



    Mais ! Ôtez moi d'un doute le Builder, on ne le déploie pas avec le site lorsque on fait un livrable ?

    Donc je suis obligé de faire une classe qui reprends mafonction ?
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  4. #4
    Rédacteur

    Non justement c'est pour ça que j'ai changé le mode de distribution

    c'est pour bien distinguer

    - le builder qui sert a creer, editer, generer son site
    - la librairie du framework qui contient toutes les classes necessaires à un site


    Le builder n'est pas à deployer sur le site de production

    Et cette methode ne doit pas etre utiliser dans votre site, pourquoi faire ? elle liste les actions d'un module en parsant les repertoires, c'est tres lourd: juste utiliser pour le module de création de menu
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre confirmé
    Petit curieux

    J'ai créé 3 modules : Accounts, Groups et Permissions.

    J'exploite cette méthode pour la gestion des permissions.

    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  6. #6
    Rédacteur

    Je vois l'idée mais c'est peu performant, apres vous pouvez toujours embarquer cette methode dans une classe plugin ainsi vous la mettez sur les projets où vous en avez besoin

    mais je vous invite à creer un "cache" car comme je l'écris plus haut c'est gourmand, j'ai ecris cette methode pour le builder qui n'a pas de contrainte de performance
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  7. #7
    Membre confirmé
    Je viens de constater que l'ensemble du module auth et gestion de groupe avait été retravaillé depuis la dernière fois que j'avais l'exploité.

    Il faut que je retravaille sur cette base.

    Je partagerais le contenu si je suis satisfait de mon travail
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  8. #8
    Rédacteur

    Avec plaisir
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###