Php javascript dahil en iyi yolu?

6 Cevap php

Bu benim şu anda bunu yapıyorum yoludur.

 <?php
//show footer
echo "<script type='text/javascript'>\n";
echo "alert('Congrats');\n";
echo "</script>";

?>

Sadece echo daha iyi bir yolu var mı?

6 Cevap

elbette

?>
alert('Congrats');
<?

Sadece PHP etiketlerinin dışında JavaScript kodu koyun:

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

Eğer gerçekten have to PHP onu yazdırarak js yürütmek Eğer js işlevselliği bazı dosya fonksiyonları saklanır vardı ve sonra aramaları yazdırarak onları çağırdı eğer, en azından temiz olacaktır.

Ben sadece PHP kodu PHP dosyalarını ayırma ve ayrı şablon dosyalarında önuç kod (HTML / CSS / javascript) tutmanızı öneririz.

Ben sunum katmanı ve karıştırma, Son kontrol aynı dosya içine arka uç kod yaklaşık 12 yıl önce popüler oldu.

Bir proje için dosya hiyerarşi bu gibi görünebilir:

- 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

Heredoc kullanın, ya da "html" moduna PHP modundan çıkmak. Javascript tamamen statik veya dahil bazı PHP değeri (php üzerinden '>') html moduna açılan gereken bir kaç parça varsa. Bu herhangi bir iyi bir metin editörü uygun olarak HTML ve Javascript ve sözdizimi vurgulamak yaptığınızı fark sağlayacaktır. Aşağıdaki tüm eşdeğerdir, ancak daha okunabilir olduğu kendiniz karar verin:

'Saf php':

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

'Heredoc' sözdizimi:

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

'Html modu':

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

her biri için artı / eksileri:

  1. saf php: PHP modunda kalabilir, ve yankı + $ vars PHP kodu olarak vurgulanır, ama yankılanan konum javascript html / düz metin muamelesi görüyor ve renkli olacak gibi (örn: hepsi aynı renk)
  2. metin sözdizimidir: PHP modunda kalmak, ancak bu nedenle herhangi bir html temizleyici bakacağız, kodunuzda herhangi bir tırnak (' ve ") kaçmak zorunda değil parası kazanmak. En editörler PHP heredoc bloğunda vars tanımak ve bunları uygun renk, ama metnin geri kalanı metin olarak kabul edilecek, böylece javascript / html aynı bakacağız. Ayrıca, metnin içine fonksiyon çağrıları ekleyemezsiniz. Sen yorumlu metin başlamadan ÖNCE olanları yapmak ve eklenebilir bir var, sonuçları saklamak zorunda. Yorumlu metin de doğrudan bir değişken içine uzun metin blokları atamak için kullanmak olabilir.
  3. 'Html modu': The editor will see/recognize your html, javascript, AND php and color them appropriately. But this is at the cost of having to sprinkle php open/close tags anywhere you need to fill in some value dynamically. On the plus side, you can directly insert function call results (htmlspecialchars(), urlecncode(), html_strip_tags(), etc...) without having to store the values in an intermediate var. It also makes for harder-to-maintain code as your PHP is now sprinkled randomly throughough the html/javascript code.

Bu, tüm üzerinde çalışıyoruz özel bir kod için en kolay olanı aşağı kaynar.

JavaScript çıkış için model-view-controller desen kullanabilirsiniz.

: Eğer JS en depolanan bir "görünüm" dosya olabilir

myJavascript.js.php:

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

Sizin kontrolör, jsController.php:

$name = "Jane";