2010-03-25 8 views

Répondre

3

bien sûr

?> 
alert('Congrats'); 
<? 
+0

Il m'a fallu une seconde pour comprendre pourquoi ces balises PHP semblaient reculer! –

+3

La deuxième balise PHP va casser dans les installations avec short_open_tag = 0. ' fuxia

8

Il suffit de mettre votre code JavaScript en dehors des balises PHP:

<?php 
    // your PHP code goes here 
?> 
// your javascript function out of the PHP tag. 
function f() { 
    alert('congrats'); 
} 
+0

Ceci est ma préférence aussi, échapper PHP et le balisage de sortie ou JS. – bdl

+0

Seulement pour les gros morceaux sinon il devient * très * désordonné/illisible! – Veger

2

Si vous avez vraiment devez exécuter les js en l'imprimant à partir du PHP, il serait au moins Soyez plus propre si vous aviez votre fonctionnalité js stockée dans des fonctions dans un fichier, puis les appelait en imprimant les appels.

0

Vous pouvez utiliser le modèle model-controller-controller pour sortir du code JavaScript.

Vous pouvez avoir un fichier "vue", où la plupart de votre JS est stocké:

myJavascript.js.php:

alert('hello bob'); 
alert('hello <?php echo $name; ?>'); 
alert('whats up?'); 

Votre contrôleur, jsController.php:

$name = "Jane"; 
2

Je recommande de réserver des fichiers PHP juste pour le code PHP et de garder votre code frontal (HTML/CSS/javascript) dans des fichiers de modèles distincts.

La dernière fois que j'ai vérifié, le mélange du code de la couche de présentation & dans le même fichier était populaire il y a environ 12 ans.

Votre hiérarchie de fichiers pour un projet pourrait ressembler à ceci:

- my_project 
    - lib 
     - PHP files here 
    - templates 
     - HTML templates here 
    - public <- this is your document root for web server 
    - index.php <- just a dispatcher 
    - js 
    - images 
    - css 
+1

+1 Je le ferais avec cet arbre dir, mais l'idée demeure: JS doit être kep dans les fichiers séparés, sauf dans les rares cas où vous devez les générer à la volée. –

1

Utilisez Heredoc ou sortir du mode PHP en mode « html ». Si le Javascript est entièrement statique, ou a quelques parties qui ont besoin d'inclure une valeur PHP, passez en mode html ('?>' En php). Cela permettra à tout éditeur de texte décent de se rendre compte que vous faites du HTML et du Javascript, et de mettre en évidence la syntaxe appropriée. Les éléments suivants sont tous équivalents, mais décider par vous-même qui est plus lisible:

'php pure:

<?php 
    echo '<script>'; 
    echo ' var x = [' . $somePHPvar . '];'; 
    echo ' alert(x);'; 
    echo '<script>'; 
?> 

'heredoc' syntaxe:

<?php 
echo <<<EOF 
    <script> 
     var x = [{$somePHPvar}]; 
     alert(x); 
    </script> 
EOF; 
?> 

'mode html':

<?php ?> 
<script> 
    var x = [<?php echo $somePHPVar ?>]; 
    alert(x); 
</script> 

plus/minus pour chacun:

  1. php pur: vous pouvez rester en mode PHP, et vos echo + $ vars seront mis en évidence sous forme de code PHP, mais le html/javascript que vous faites écho sera traité comme du texte brut et coloré comme tel (ex: tous de la même couleur)
  2. Syntaxe heredoc: Vous restez en mode PHP, mais vous avez l'avantage de ne pas avoir à échapper de guillemets (' et ") dans votre code, donc tout code HTML sera plus propre.La plupart des éditeurs reconnaîtront les variables PHP dans le bloc heredoc et les coloreront de manière appropriée, mais le reste du texte sera traité comme du texte, donc javascript/html se ressemblera. En outre, vous ne pouvez pas insérer d'appels de fonction dans le texte. Vous devez les faire AVANT de lancer l'heredoc et stocker les résultats dans un var, qui peut être inséré. Le HEREDOC peut également être utilisé pour affecter directement des blocs de texte longs dans une variable. 'Html mode': L'éditeur verra/reconnaîtra votre code html, javascript et php et les colorera de manière appropriée. Mais c'est au prix d'avoir à saupoudrer php open/close tags partout où vous avez besoin de remplir une certaine valeur dynamiquement. Sur le plan positif, vous pouvez insérer directement les résultats des appels de fonction (htmlspecialchars(), urlecncode(), html_strip_tags(), etc ...) sans avoir à stocker les valeurs dans un var intermédiaire. Cela rend également le code plus difficile à maintenir car votre PHP est maintenant saupoudré aléatoirement tout au long du code html/javascript.

Tout se résume à ce qui est le plus facile pour le code particulier sur lequel vous travaillez.

Questions connexes