Constante en POO interne ou externe
le 25/09/2009 à 15:55
laura
Bonjours à tous,
J'ai une petite question pour les pro de la POO en php
j'ai une constante
<?php
define('DEBUG',true);
?>
j'aimerais savoir s'il est préférable de faire
<?php
class a
{
public function __construct(){}
public function machin()
{
if(DEBUG)
{
//ici quelque chose
}
}
}
?>
ou bien
<?php
class a
{
private
$_debug;
public function __construct($debug=false)
{
$this->_debug=$debug;
}
public function machin()
{
if($this->_debug)
{
//ici quelque chose
}
}
}
?>
Et pourquoi l'un ou l'autre?!
Merci d'avance de vos réponses
Des étoiles dans les yeux, le ciel pour m'évader
Tout dépend du role de ton 'debug'.
Si il s'agit d'un debug uniquement pour cette classe, tu peux utiliser la méthode 2.
Si il s'agit d'un debug général du site, la première solution semble plus appropriée.
Mais les deux sont complémentaires. tu pourrais avoir par exemple :
<?php
define('DEBUG',true);
class a
{
private
$_debug;
public function __construct($debug=false)
{
$this->_debug=$debug;
}
public function machin()
{
if($this->_debug)
{
//ici quelque chose
}
if (DEBUG) {
// ici quelque chose d'autre en plus
}
}
}
?>
le 25/09/2009 à 17:28
laura
Re bonjours,
Il s'agit d'une variable générale de débug. Utilisé un peu partout sur le site.
Elle est utilisée uniquement en phase de test. Puis placée à false ensuite.
Donc ma première méthode est la bonne si j'ai bien comprit. Je garde ma constante en l'utilisant comme tel dans mes classes
Des étoiles dans les yeux, le ciel pour m'évader
Oui, c'est ce que je ferais (et que je fais églamenent).
L'avantage aussi d'une vraie constante (et pas un attribut privé), c'est que par définition c'est constant, ton script ne peut pas la modifier :)
le 25/09/2009 à 18:23
laura
C'est pas faux. Il est mieux de garder une vraie constante. C'est plus sûr niveau sécurité.
Merci de ton aide, c'est très gentil
Des étoiles dans les yeux, le ciel pour m'évader
Tiens donc, j'étais passé à côté de cette discussion. Il y a une autre solution. Pour un DEBUG général, ce n'est pas pertinent, mais si tu en as besoin pour déclarer des constantes qui prennent leur place dans une classe, tu as le mot-clé const. D'ailleurs, à partir de PHP 5.3, on peut utiliser le mot-clé const.
<?php
const DEBUG = true ;
class document
{
const TEXT_NODE_TYPE = 13 ;
}
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 08/10/2009 à 21:23
laura
C'est vrai que pour une certaine logique de codage, utiliser const partout c'est pas mal.
Mais à mon sens const et define ne sont pas totalement identique. ça dépend donc du contexte.
define a un 3ème argument optionnel
Des étoiles dans les yeux, le ciel pour m'évader
Rha, ignoble, je ne connaissais pas cette abomination qui permettait de rendre les constantes insensibles à la casse.
La véritable différence entre define et const, depuis PHP53, c'est surtout que const définit des constantes limitées à leur scope, alors que les constantes définies par define seront globales à tout les scopes.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
le 09/10/2009 à 12:32
laura
Je suis d'accord avec toi ^^ C'est peut-être un formalisme de programmation mais pour moi une constante doit être en majuscule.
Des étoiles dans les yeux, le ciel pour m'évader
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: