PHP|Débutant :: Forums

Advertisement

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

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

#1 Re : Forum Général PHP » notation bizarre de defined dans le zend framework » 28-03-2011 19:04:15

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 !!

#2 Forum Général PHP » notation bizarre de defined dans le zend framework » 28-03-2011 19:04:15

EnseignementEnLigneCom
Réponses : 4

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 ?

Pied de page des forums

Propulsé par FluxBB