Constantes de classes en paramètre d'une fonction

cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 - 19 févr. 2009 à 14:58
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 26 févr. 2009 à 21:46
Bonjour à tous,

J'ai un petit soucis.
Je suis entrain de faire un moteur de template, utilisant trois types de caches :
BZIP, GZIP et ZIP pour la compression du cache.

Je voudrais utiliser des constantes de classes directement au sein du prototype de la fonction.
J'explique, je voudrais pouvoir dire à la fonction que le paramètre $type par exemple soit à ZIP par défaut (la constantes ZIP créer avec le mot-clé const bien sur ;)).

Le problème est que là il me met toujours cela, il prend pas donc ce que j'indique au paramètre quand j'appel la fonction, il se contente de mettre directement la valeur de la constantes ZIP dans $type.

Comment faire ?

Merci pour votre aide.

4 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
21 févr. 2009 à 09:19
Bonjour,

Suggestion :
Si tu veux absolumnent utiliser des constantes déclarées avec le mot clé CONST, il faut donc passer par l'utilisation d'une classe.
Définir une classe qui contient les différents types de compressions utilisées :

class CompressionTypes{
    const CT_ZIP = 'zip';
    const CT_BZIP = 'bzip';
    const CT_GZIP = 'gzip';
}

Ensuite les méthodes des classes utilisatrices définissent le type par défaut en précisant la classe (facultatif), le nom de l'argument ($compression) et la valeur par défaut en utilisant l'opérateur de résolution de portée (::)

class MyClass{
    public function method1($arg1, CompressionTypes $compression = CompressionTypes::CT_ZIP){
        // ton code ici
    }
}

May Delphi && PHP be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
21 févr. 2009 à 11:10
Pour ce qui appel la fonction de la classe, je sais, mais c'est dans le code de la classe (la classe qui définis les constantes de classes est la même que celle qui a la fonction qui met par défaut).
J'ai essayé en faisant appel à la classe self qui est comme le $this donc en faisant : self::ZIP mais ça change rien.

De retour sous linux, je tenterais avec directement le nom de classe et je te dis cela ;)
0
cs_christophedlr Messages postés 262 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 juillet 2022 4
25 févr. 2009 à 10:25
Problème résolu, je viens tous juste de me rendre compte que dans l'appel à la fonction, je déclarais au niveau du cache et non le type, donc au final le type était inchangé, donc ca risquait pas de fonctionner.
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
26 févr. 2009 à 21:46
Je ne comprends pas bien ta réponse mais si ça marche, c'est l'essentiel.

May Delphi be with you !
<hr color="#008000" />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0