PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 27-03-2011 13:02:25

EnseignementEnLigneCom
Membre
Lieu : Vendée
Inscription : 27-03-2011
Messages : 2
Site Web

notation bizarre de defined dans le zend framework

Bonjour à tous,
Je suis en train d'étudier la façon de faire des applications en ligne zend framework et je suis tombé sur une ligne de code que je n'arrive pas à comprendre :
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

Je ne vois pas l'utilité de la fonction defined ici vu qu'il n'y a pas de test avec un if.
Pour moi defined renvoie true et le define définit la constante. Je ne vois pas l'intérêt de coupler les deux avec un opérateur logique "et".
Quelqu'un a-t'il le secret de cette instruction ?


Mes tutoriels vidéo gratuits en ligne :
http://www.enseignement-en-ligne.com/

Hors ligne

#2 27-03-2011 15:04:56

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : notation bizarre de defined dans le zend framework

Ce n'est pas un opérateur ET(&&) mais OU(||) !
Ce test vérifie que la constante existe, si elle n'existe pas on passe dans le OR et donc on la créé, la création renvoyant toujours true cela fini le test. wink

Hors ligne

#3 28-03-2011 16:26:50

EnseignementEnLigneCom
Membre
Lieu : Vendée
Inscription : 27-03-2011
Messages : 2
Site Web

Re : notation bizarre de defined dans le zend framework

Oui, pardon c'est un "ou", je devais être fatigué roll
@xTG, avec ton aide et le php manual, je pense avoir compris la chose suivante.
Déjà à priori, comme je le pensais, il n'y a pas de test (au sens habituel) car il n'y a pas de if ni d'opérateur ternaire (if avec le ?).
Je pense avoir compris maintenant en regardant la page ici :
http://www.php.net/manual/fr/language.o … ogical.php qui indique :
$a || $b     Or (Ou)     TRUE si $a OU $b est TRUE.
et surtout, mes cours d'automatisme sont revenus donc j'ai reconsulté la table de vérité d'un "ou" ici :
http://fr.wikipedia.org/wiki/Table_de_v%C3%A9rit%C3%A9
A partir de là, j'ai essayé de raisonner en terme de "compilateur".
Quand le compilateur évalue
$a||$b, il commence par évaluer la valeur de $a. Si $a vaut 1, il ne va pas plus loin pour ne pas perdre de temps (les compilateurs sont optimisés) et n'évalue pas le $b car il sait déjà que l'ensemble fait 1 (quelquesoit la valeur de $b).
Maintenant, si $a vaut 0, il évalue $b pour voir si l'ensemble ($a||$b) fait 1 (true) ou 0 (false);
En résumé, si  defined('APPLICATION_PATH') c'est à dire si la constante est définie (donc à 0 ou true), le compilateur ne s'occupe pas de la deuxième expression jusqu'au ";" et passe à la ligne suivante.
Si defined('APPLICATION_PATH') est à false, le compilateur évalue et donc exécute la deuxième instruction qui est define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Pour résumé : si "APPLICATION_PATH" est définie, on ne la redéfinit pas. Sinon on la définit !!
Cela dit, beaucoup de monde s'accorde à dire que ce code, au demeurant très pratique, est très "compliqué à comprendre" quand on a pas eu les éclaircissements et que l'on a pas une vision "compilateur".
Vais pas me laisser impressionner par quelques lignes de code du team zend !! Non mais !!:P
Vous me dites si je me trompe !!


Mes tutoriels vidéo gratuits en ligne :
http://www.enseignement-en-ligne.com/

Hors ligne

#4 28-03-2011 19:00:17

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : notation bizarre de defined dans le zend framework

wink

Hors ligne

#5 28-03-2011 19:04:15

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : notation bizarre de defined dans le zend framework

Saluton,

EnseignementEnLigneCom a écrit :

Cela dit, beaucoup de monde s'accorde à dire que ce code, au demeurant très pratique, est très "compliqué à comprendre" quand on a pas eu les éclaircissements

le contraire d'une démarche KISS, en quelque sorte.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums