Vous n'êtes pas identifié(e).
Pages : 1
Oui, pardon c'est un "ou", je devais être fatigué
@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 !!
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 ?
Pages : 1