2009-03-25 4 views
3

J'ai déjà entendu dire que c'est bien d'avoir une classe avec toutes vos constantes d'application pour que vous n'ayez qu'un seul emplacement avec toutes vos constantes.constants class en php

moi avons essayé de le faire de cette façon:

class constants{ 
    define("EH_MAILER",1); 
} 

et

class constants{ 
     const EH_MAILER =1; 
    } 

Mais les deux sens, il ne fonctionne pas. Des suggestions?

+0

Où avez-vous entendu? Je pense qu'il est préférable de coupler la constante avec l'endroit où elle sera utilisée. Aussi, qu'est-ce que EH dans votre exemple? Je pense que cette constante mérite un meilleur nom. – strager

+0

Si vous faites une application de style plus procédural, je pourrais voir un argument pour une inclusion complète de define() s, mais, si vous travaillez avec OO, mettre toutes les constantes dans une seule classe n'a aucun sens. Ils appartiennent à la classe pour laquelle ils sont (le plus) pertinents. –

Répondre

18

Dans la version actuelle de ce PHP est la façon de le faire:

class constants 
{ 
    const EH_MAILER = 1; 
} 

$mailer = constants::EH_MAILER 

http://www.php.net/manual/en/language.oop5.constants.php


A partir de PHP 5.3, il y a une meilleure façon de le faire. Namespaces.

consts.php

<?php 
namespace constants 
const EH_MAILER = 1 

... 

other.php

<?php 
include_once(consts.php) 

$mailer = \constants\EH_MAILER 
+0

C'est comme ça que je suggérerais de le faire. –

+0

C'est la solution que je cherchais. Sans les espaces de noms bien sûr! Tnx – sanders

+0

Ne serait-ce pas \ constantes \ EH_MAILER, ou tout au moins constantes \ EH_MAILER? –

0

Quelle version php utilisez-vous?

Voir php de page pour les constantes de classe