prob de compréhension de syntaxe

Eléphanteau du PHP | 18 Messages

21 janv. 2008, 10:38

bonjour voila je voulais s'avoir si il est diférent d'écrire <?php plutot que <? pour ouvrir une balise php
si dans if(!isset(...)) le ! est obligatoire?
si les { } sont obligatoire pour les if et les else
d'avance merci bcp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2008, 10:59

bonjour voila je voulais s'avoir si il est diférent d'écrire <?php plutot que <? pour ouvrir une balise php
Alors, effectivement, il y a une petite différence entre "<?php" et "<?". Le premier est la balise d'ouverture standard de php (fonctionne partout, tout le temps), tandis que le second "short open tag" n'est utilisable que si le serveur est configurer pour les reconnaitre.

Dans le doute, il vaut donc mieux toujours employer "<?php" ne sachant jamais à l'avance comment sera configuré le (ou les) serveur(s) où tes scripts seront déployés :)
si dans if(!isset(...)) le ! est obligatoire?
Le point d'exclamation est un opérateur de négation. Il te retourne donc l'inverse de la condition qui va suivre. Ex : si isSet($var) retourne vrai, alors !isSet($var) retournera faux (et inversement). Il n'est donc pas obligatoire, mais dépend du test que tu veux effectuer : veux-tu savoir si $var est définie ou au contraire si elle ne l'est pas ? :)
Dans le cas d'un if/else ça ne change pas grand chose, suffit d'inverser l'ordre, mais parfois tu n'as pas besoin de else, il est donc pratique de pouvoir inverser la condition :)
si les { } sont obligatoire pour les if et les else
Cela dépend de ce que tu veux faire. Les accolades permettent de définir un groupe d'instruction. Un if (ou else, ou for, ou while etc.) s'applique sur l'instruction qui le suit immédiatement. S'il n'y en a qu'une, les accolades ne sont pas obligatoires. S'il y en a plusieurs, alors elles sont nécessaires pour dire à php que le test s'applique sur tout le bloc d'instructions et non uniquement sur la première qu'il va trouver :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 18 Messages

21 janv. 2008, 11:24

merci very trop bcp
si je peut encore te demandé :
est-ce que les variable $_get et $_post peuvent être seul c'est a dir :
array_merge($_POST,$_FILES)
car normalement ce n'est pas : $_post["variable"];
Modifié en dernier par TheBoubourse le 21 janv. 2008, 11:31, modifié 1 fois.

ViPHP
ViPHP | 4039 Messages

21 janv. 2008, 11:28

si les { } sont obligatoire pour les if et les else
Cela dépend de ce que tu veux faire. Les accolades permettent de définir un groupe d'instruction. Un if (ou else, ou for, ou while etc.) s'applique sur l'instruction qui le suit immédiatement. S'il n'y en a qu'une, les accolades ne sont pas obligatoires. S'il y en a plusieurs, alors elles sont nécessaires pour dire à php que le test s'applique sur tout le bloc d'instructions et non uniquement sur la première qu'il va trouver :)
Et si je ne me trompe, il en est de même pour les foreach(),while(), for() et switch().

Pareil pour JS (histoire de le dire), mais je trouve quand même qu'on y perd vite en clarté si on en abuse.. c'est un peu comme les parenthèses; on peut les éviter, mais ça sert à structurer.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2008, 12:28

@TheBoubourse : je ne sais pas si c'est ce que tu cherches, mais il existe également une variable $_REQUEST qui regroupe les données présentes dans $_POST, $_GET et $_COOKIE (nota : les majuscules sont importantes :)).
A lire sur le sujet : http://us3.php.net/manual/fr/reserved.variables.php


@Berzemus : tout à fait :) Pour la clarté, une bonne indentation du code est généralement suffisante pour voir immédiatement sur quelle(s) instruction(s) porte la structure, après c'est un peu fonction des goûts et des habitudes de chacun.. (Pour ma part j'en colle systématique sur les boucles même s'il n'y a qu'une instruction, en revanche je n'en met jamais sur les if/else quand ils ne concernent qu'une seule ligne :))
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...