Archives FluxBB.fr

Les archives de FluxBB.fr

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

#1 16-11-2005 13:08:25

Robloche
Membre

Balises <?php non fermées

Bonjour,

Je viens de constater que certains fichiers (tous ?) comme functions.php (dans "include") ne se terminaient pas par ?>. Le forum fonctionne correctement, donc ce n'est pas très grave mais je me demandais pourquoi les balises fermantes ?> n'étaient pas là.

Personnellement, quand je mets <?php dans un fichier, je m'assure toujours qu'il y a un ?> correspondant. C'est ainsi qu'on m'a appris à coder.

Pouvez-vous m'éclairer ?

Merci !

Hors ligne

#2 16-11-2005 14:18:48

Kynerion
Membre

Re : Balises <?php non fermées

Bonjour,

il est fort possible que ce genre de fichiers "non-fermés" soient appelés par d'autres (et concernant functions.php, c'est le cas souvent) qui s'occuperont ensuite de fermer l'ensemble.

Parce que les fichiers du répertoire /include/ ne sont pas autonomes, ils sont toujours requis par d'autres, qui s'occupent de la fermeture du code PHP.

Hors ligne

#3 16-11-2005 14:26:51

Robloche
Membre

Re : Balises <?php non fermées

Tout à fait.

Mais prenons le fichier index.php. Dedans on trouve include("common.php"). Et dans common.php on trouve include("functions.php").

index.php, common.php et functions.php commencent tous les trois par <?php. Ce qui fait qu'on passe trois fois en « mode PHP » mais qu'on n'en sort qu'une unique fois, tout à la fin (dans footer.php, je crois, appelé à la fin de index.php).

Personnellement, je trouve ça bizarre...

Moi mes sources ressemblent plus à ça :
fichier a.php :
<?
...
include "b.php";
...
?>

fichier b.php :
<?
...
?>

Et ça fonctionne très bien. Alors pourquoi ne pas être rigoureux et laisser des balises ouvertes ?

En fait, le problème vient de mon éditeur HTML, Dreamweaver, qui perd les pédales depuis la dernière mise à jour de punbb. Aussi incroyable que cela puisse paraître, il n'est plus capable de sauver le fichier functions.php correctement. C'est-à-dire que si j'ouvre ce fichier et que je le sauve sans le modifier, Dreamweaver le modifie quand même (il supprime un < à la ligne 1059). J'ai mis deux jours à trouver la source du problème : si je mets ?> à la fin du fichier, Dreamweaver ne perd plus les pédales.

D'où mon interrogation sur la fermeture des balises...




P.S. : Je précise pour les puristes que je n'utilise Dreamweaver que pour sa coloration syntaxique et son aide intégrée. wink

Dernière modification par Robloche (16-11-2005 14:31:19)

Hors ligne

#4 16-11-2005 16:59:16

kiplantt
Membre

Re : Balises <?php non fermées

C'est pour éviter qu'on ajoute du texte après la balise fermante ?> ce qui provoquerait une erreur (par ex. headers already sent, etc.)

C'est surtout utile pour le fichier config.php où l'erreur est vite faite.

PS: utilise plutôt Notepad2, c'est + léger. wink

Hors ligne

#5 16-11-2005 18:13:04

Robloche
Membre

Re : Balises <?php non fermées

Ok, ok.

Sinon, j'utilise ConTEXT, comme éditeur. Très sympa aussi.

Hors ligne

#6 16-11-2005 23:45:42

MT
Admin rasé

Re : Balises <?php non fermées

Tant que ça marche et que les fichiers sont validés par le w3c, moi ça me va !


(s) MT
ex-Apupv
:faq: :recherche:
Gra.

Hors ligne

#7 17-11-2005 09:05:07

Elianora la blanche
Membre

Re : Balises <?php non fermées

le w3c valide la sortie html et non pas les sources php


La programmation c'est comme les icebergs, les gens ne voient que les 10% émergés.

Hors ligne

#8 17-11-2005 10:05:50

vin100
Membre

Re : Balises <?php non fermées

je ne retrouve plus où c'etait écrit dans la doc de PHP mais c'est absolument pas obligatoire de fermer les balises PHP ; PHP n'est ni un dérivé de SGML ni un de XML ; la balise de fermeture n'est absolument pas obligatoire, elle est utile si on as des instructions autres que PHP à mettre à la suite mais sinon la fin du fichier fait office de balise fermante et c'est pas une question de "rigueur" c'est comme ça en PHP

Hors ligne

#9 17-11-2005 12:42:28

Robloche
Membre

Re : Balises <?php non fermées

vin100 a écrit :

je ne retrouve plus où c'etait écrit dans la doc de PHP mais c'est absolument pas obligatoire de fermer les balises PHP ; PHP n'est ni un dérivé de SGML ni un de XML ; la balise de fermeture n'est absolument pas obligatoire, elle est utile si on as des instructions autres que PHP à mettre à la suite mais sinon la fin du fichier fait office de balise fermante et c'est pas une question de "rigueur" c'est comme ça en PHP

Je comprends. Mais pratiquant également pas mal d'autres langages, ça me fait vraiment trop bizarre de ne pas fermer une balise. C'est plus fort que moi. Dès que j'ouvre une accolade, j'en ferme une, dès que je mets un begin, je mets un end. smile

En tout cas, merci à tous pour vos explications et vos points de vue.

Hors ligne

#10 17-11-2005 14:27:18

Elianora la blanche
Membre

Re : Balises <?php non fermées

personne ne t'empeche de mettre des ?> partout ^^ on t'en voudras pas pour si peu tongue


La programmation c'est comme les icebergs, les gens ne voient que les 10% émergés.

Hors ligne

#11 17-11-2005 21:41:14

Mobman02
Membre

Re : Balises <?php non fermées

Oui c'est comme en CSS par exemple,
on est pas obliger de mettre le ";" dans la derniere propriété d'un ensemble :

exemple {
truc : machin;
bidule : retruc
}

Il n'y a pas de probleme avec des includes ou quoi que ce soit,
si le fichier se termine par ?>, et bien on est pas du tout obliger de le fermer.

En faite ?> ça sert surtout pour <?php echo 'quand on veut faire ça'; ?> et remettre autre chose que du php derriere tongue

Apres le mettre ? ne pas le mettre ? C'est surtout une histoire de gout, c'est "dans la tête" que ça se passe, PHP.net ne precise pas explicitement que ça soit conseiller ou non.

Hors ligne

#12 18-11-2005 09:38:49

Robloche
Membre

Re : Balises <?php non fermées

Mobman02 a écrit :

Oui c'est comme en CSS par exemple,
on est pas obliger de mettre le ";" dans la derniere propriété d'un ensemble :

exemple {
truc : machin;
bidule : retruc
}

Euh... Pour moi, ce n'est pas vraiment comparable.
Ce serait plus proche de « ne pas mettre la dernière accolade si le fichier se termine par } », et encore...

Mobman02 a écrit :

Apres le mettre ? ne pas le mettre ? C'est surtout une histoire de gout, c'est "dans la tête" que ça se passe, PHP.net ne precise pas explicitement que ça soit conseiller ou non.

Ce n'est pas qu'une histoire de goût. C'est une histoire de propreté et de lisibilité du code. Je ne sais pas où vous avez appris à programmer (ce n'est pas une critique !) mais personnellement, jamais mes profs n'auraient toléré ça.

agravetoncas a écrit :

il vaut mieux ne pas la mettre car elle fait réagir le parseur php wink.

Ben il suffit de ne pas faire n'importe quoi ! Si on ne met ni espace ni saut de ligne après la dernière ?>, il n'y aura aucun problème. On pourra inclure ce fichier n'importe où.


Voilà, voilà, c'était juste mon avis au réveil. smile

Hors ligne

#13 18-11-2005 10:07:54

vin100
Membre

Re : Balises <?php non fermées

Robloche a écrit :

Ce n'est pas qu'une histoire de goût. C'est une histoire de propreté et de lisibilité du code. Je ne sais pas où vous avez appris à programmer (ce n'est pas une critique !) mais personnellement, jamais mes profs n'auraient toléré ça.

C'est là où tu devrait prendre un peu de recul par rapport à ce que tu dis ; ça n'a rien à voir avec "la propreté" et "la lisibilité" ; cette balise de fermeture est à la fin du fichier et ça ne change strictement rien à la propreté du document et strictement rien non plus à la lisibilité.

Franchement elle est où la diférence d'avoir ?> tout en bas d'un fichier ou de ne pas l'avoir ? C'est plus propre de mettre ?> à la fin d'un fichier ? C'est plus lisible de mettre ?> à la fin d'un fichier ? Tu dis n'importe quoi ; tu applique bettement une règle que tu as appris sans prendre de recul par rapport à celle-ci. Encore tu dirait que c'est plus "rigoureux" j'veux bien (quoi que c'est encore largement discutable dans ce cas présent).

Regarde bien le reste du code de PunBB tu verra si le code n'est pas rigoureux, s'il n'est pas propre et pas lisible et si c'est ce que tu pense vraiment alors tu me montrera alors ce qu'est pour toi du code propre et lisible dans le cas contraire tu m'expliquera pourquoi juste à cet endroit Rickard n'a pas été "propre et lisible".

Hors ligne

#14 18-11-2005 10:14:34

Robloche
Membre

Re : Balises <?php non fermées

Ah ben j'ai bien fait de préciser que c'était pas une critique !
C'est juste un conviction personnelle. Je dois être psycho-rigide mais quand je mets <? je trouve logique de mettre le ?> correspondant immédiatement. Ensuite, je mets du code entre les deux. Du coup, je ne vais pas effacer la dernière balise sous prétexte qu'il n'y a rien après...

Et puis je pense que c'est une bonne habitude pour quelqu'un qui utilise ou utilisera d'autres langages car ceux que je connais, en tout cas, ne sont pas aussi permissifs.

Je suis désolé si j'ai été mal interprété ou si je me suis mal exprimé. Je ne voulais nullement remettre en cause la façon de programmer des auteurs (ou de l'auteur, je ne sais plus) de punbb.

Hors ligne

#15 18-11-2005 10:24:20

vin100
Membre

Re : Balises <?php non fermées

Robloche a écrit :

Ah ben j'ai bien fait de préciser que c'était pas une critique !

Je l'ai pas pris comme une critique mais comme une "conviction personnelle" assenée aux autres.

Robloche a écrit :

C'est juste un conviction personnelle. Je dois être psycho-rigide mais quand je mets <? je trouve logique de mettre le ?> correspondant immédiatement.

Effectivement roll c'est soit ça soit la difficulter à te remettre en question toi et tes connaissances.

Bon et puis tu sais quoi ? Aller tiens je te fait plaisir : oui tu as raison c'est mieux comme toi tu dis, tu as raison. Voilà ça va mieux ?

Fatiguant.

Hors ligne

#16 18-11-2005 10:26:45

nexxuscorp
Membre

Re : Balises <?php non fermées

Bah en faite ( je pose mon avis de newbie bien newbie hein), moi personnellement, j'ai toujours vu des fichiers php ouvert et fermé avec les <?php et ?>

Et punbb et le seul a ne pas fermé les fichiers a la fin.

C'est un peu flippant parce que bon, on se demande parfois si y a des code qui servent a des trucs. J'utilise dreamweaver et ce logiciel color bien les code php dans un fichiers mais il suffit qu'une balise manque et bame c'est la fête de l'incomprehension.

Apres les <?php et ?> c'est en fonction des gout et des couleurs parce qu'un prof peut dire :
si vous ouvrez avec <?php il faut automatiquement fermé avec ?> a la fin du fichier.

Mais dans deux ans, y a un autre prof il vous dira :
Il n'y a pas d'utilité a fermé desuite il faut attendre un peu avant de fermer.

Voila mon avis perso


Je suis un bleu, mais je me demerde, et si je peux aider, j'aiderais.

Hors ligne

#17 18-11-2005 11:34:09

Robloche
Membre

Re : Balises <?php non fermées

vin100 a écrit :
Robloche a écrit :

Ah ben j'ai bien fait de préciser que c'était pas une critique !

Je l'ai pas pris comme une critique mais comme une "conviction personnelle" assenée aux autres.

Robloche a écrit :

C'est juste un conviction personnelle. Je dois être psycho-rigide mais quand je mets <? je trouve logique de mettre le ?> correspondant immédiatement.

Effectivement roll c'est soit ça soit la difficulter à te remettre en question toi et tes connaissances.

Bon et puis tu sais quoi ? Aller tiens je te fait plaisir : oui tu as raison c'est mieux comme toi tu dis, tu as raison. Voilà ça va mieux ?

Fatiguant.

Mon but n'était pas d'imposer mes convictions personnelles mais bel et bien d'en discuter.

Que je me sois mal exprimé la première fois, c'est possible. Mais là, tu n'y mets pas du tien...

Hors ligne

#18 18-11-2005 14:29:12

MT
Admin rasé

Re : Balises <?php non fermées

Elianora la blanche a écrit :

le w3c valide la sortie html et non pas les sources php

Dans ce cas là, oubliez ce que j'ai dit !


(s) MT
ex-Apupv
:faq: :recherche:
Gra.

Hors ligne

#19 18-11-2005 15:39:36

vin100
Membre

Re : Balises <?php non fermées

Robloche le truc c'est que j'ai pas envie de pinailler pendant trois plombes sur un truc qui que très peu d'importance.

Oui il faut fermer les tags si on as quelque chose à envoyer à la sortie après ; non ce n'est pas obligatoire de les fermer en fin de fichier et c'est correct d'un point de vue syntaxique PHP.

Qu'est-ce que tu veut qu'on en discute plus ? Pour toi c'est sale et illisible ; ok je te répond ; après c'est une question de bonne pratique ; ok je t'ai précédement répondu : regarde le reste du code c'est propre ; bref on tergiverse pour autour d'un truc qui n'a aucune importance.

Hors ligne

#20 18-11-2005 15:58:39

Robloche
Membre

Re : Balises <?php non fermées

Ça n'a théoriquement aucune importance mais Dreamweaver, sûrment à cause d'un bug, perd complètement les pédales quand il manque le ?> final. Et ça, je viens de la découvrir après une journée de recherche. C'est surtout pour ça que j'étais motivé pour en discuter.

Mais tu as raison, la discussion est close. Tout est clair maintenant.

J'espère que mes prochaines interventions seront un peu plus intéressantes pour tout le monde. smile

Hors ligne

Pied de page des forums