Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-11-2009 20:33:56

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

[Résolu]Bonne pratique - Où mettre mes fonctions perso pour respect...

Bonjour,

J'ai étudier et fait plusieurs projets Zend. Seulement, il y a encore plusieurs détails qui m'échappe puisque je n'ai pas encore atteins la dizaine de projet suivant le modèle MVC. Par conséquent, il y a des scripts que je place là où ça fonctionne sans savoir si c'est une bonne pratique. Je veux améliorer mon code.

Par exemple, j'ai créer une fonction toute simple qui permet de nettoyer un nom en enlevant les caractères spéciaux et les espaces, bref, très utile pour renommer un fichier. Cette fonction est appeler dans plusieurs controlleurs et est utiliser souvent pour transformer une donné avant d'être insérer dans une base de donné, un peu comme un filtre mais plus poussé.

Cette fonction ne peut donc pas se retrouver dans un controller spécifique, ni dans un view helper. Il me reste le dossier de modèle. Seulement, jusqu'ici, tous ce qui est dans modèle sont des fichiers de classes. Est-ce qu'une telle fonction nécessitera une classe général. C'est la solution que j'ai trouvé en faisant ceci :

Code:

$badstring = "Décà _XML - Copie"; //Titre à nettoyer
$instance= new Default_Model_Process(); //La classe qui content une seule fonction clean()
echo $instance->clean($badstring); //L'appel à la fonction clean

La dite classe:

Code:

class Default_Model_Process
{
    //La fonction n'est pas au point encore, ne pas vous fier sur son fonctionnement
    public function clean($badstring){
        $pattern = Array("é", "è", "ê", "ç", "à", "a", "î", "ì", "û", "ô");
        $rep_pat = Array("e", "$rep_pat", "e", "c", "a", "a", "i", "i", "u", "o");
        $cleaned= str_replace("$pattern","e", $badstring);
        $file_bad = array("@-@", "@_@", "@[^A-Za-z0-9_\ ]@", "@\ +@");
        $file_good = array(" ", " ", "", " ");
        $cleaned= preg_replace($file_bad, $file_good, $cleaned);
        $cleaned= str_replace(" ", "_", trim($cleaned));
        return $cleaned;
    }
}

Or, vous voyez que mon appel à la fonctionne nécessite 3 lignes de code. J'aimerais avoir votre avis sur l'endroit idéal où mettre cette classe et la façon pour l'appeler.

À noter, je ne peux pas appeler ma classe seulement new process() mais avec le nom complet: "Default_Model_Process" sinon, la classe n'est pas trouvé. Je sais pas si c'est possible de régler ceci également.

Dernière modification par probitaille (27-11-2009 19:46:57)

Hors ligne

 

#2 25-11-2009 21:46:40

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: [Résolu]Bonne pratique - Où mettre mes fonctions perso pour respect...

Salut,

Si tu veux rester dans la logique du ZF, c'est typiquement le rôle d'une classe filter.

Tu peux créer tes propres filtres. Perso qu'ils ce soient spécifiques aux projets ou dans ma lib, j'use beaucoup des filtres smile

Plus d'infos ici : http://framework.zend.com/manual/fr/zen … lters.html


A+ benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#3 25-11-2009 22:00:19

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu]Bonne pratique - Où mettre mes fonctions perso pour respect...

Très interessant ! Merci ! C'est un peu ce que je cherchais mais disons que je veux pousser plus loin.

Ici, mon example est typique d'un filtre, je l'avoue. Mais si je veux utiliser une fonction qui fait autre chose, tient, qui calcul le nombre les secondes entre 2 dates et que cette fonction est utilisé dans plusieurs module/controllers.

Là on s'éloigne d'un filtre. Disons que s'en est pas un. Je retourne donc au même problème expliqué précédemment !

Hors ligne

 

#4 25-11-2009 22:38:47

Blount
Membre
Date d'inscription: 23-06-2009
Messages: 98
Site web

Re: [Résolu]Bonne pratique - Où mettre mes fonctions perso pour respect...

Dans ce cas, tu peux utiliser des classes à méthode statique.
Par exemple, effectuer des opérations arithmétiques :

PHP a écrit:

class MyLib_Math
{
    /**
     * Effectue une somme de valeurs
     * @param array $values
     * @return int
     */
    public static function sum(array $values = array())
    {
        return array_sum($values);
    }

}

Et tu l'utilise de cette façon :

PHP a écrit:

MyLib_Math::sum(array(2, 2));

Je pense que ceci est correcte.
Le but est que tu crées intelligemment tes classes, par exemple, faire des regroupements par thème.

Mais je me trompe peut-être.

Hors ligne

 

#5 25-11-2009 23:14:07

probitaille
Membre
Lieu: Montréal
Date d'inscription: 20-04-2009
Messages: 336
Site web

Re: [Résolu]Bonne pratique - Où mettre mes fonctions perso pour respect...

Merci Blount, en effet, je comprends les classes statiques mais je n'ai jamais eu à les utiliser, je vois là une bonne solution.

En effet, je dois donc regrouper mes fonctions dans des classes thèmes surtout pour une questions de nomenclature et d'organisation dans le code.

Je vous remercie pour vos solution, s'il y a d'autre proposition n'hésitez pas.

Je vais mettre le titre à résolu prochainement.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages