Так я это делаю сейчас.
<?php //show footer echo "<script type='text/javascript'>\n"; echo "alert('Congrats');\n"; echo "</script>"; ?>
Есть ли лучший способ, чем просто повторить это?
конечно
?> alert('Congrats'); <?
Просто введите код JavaScript вне тегов PHP:
<?php // your PHP code goes here ?> // your javascript function out of the PHP tag. function f() { alert('congrats'); }
Если вам действительно нужно выполнить js, напечатав его с PHP, это будет, по крайней мере, более чистым, если бы у вас была функция js, хранящаяся в функциях в каком-то файле, а затем вызванная их путем печати вызовов.
Я рекомендую резервировать PHP-файлы только для кода PHP и сохранять ваш внешний код (HTML / CSS / javascript) в отдельных файлах шаблонов.
В прошлый раз, когда я проверил, смешение уровня представления и кода backend в тот же файл было популярным около 12 лет назад.
Ваша иерархия файлов для проекта может выглядеть так:
- 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
Используйте HEREDOCS или выходите из режима PHP в режим «html». Если Javascript полностью статичен или содержит несколько частей, которые должны иметь некоторое значение PHP, перейдите в html-режим («?>» Из php). Это позволит любому достойному текстовому редактору понять, что вы делаете HTML и Javascript, и подчеркивание синтаксиса по мере необходимости. Ниже приведены все эквиваленты, но выберите для себя, что более читаемо:
'pure php':
<?php echo '<script>'; echo ' var x = [' . $somePHPvar . '];'; echo ' alert(x);'; echo '<script>'; ?>
Синтаксис «heredoc»:
<?php echo <<<EOF <script> var x = [{$somePHPvar}]; alert(x); </script> EOF; ?>
'html mode':
<?php ?> <script> var x = [<?php echo $somePHPVar ?>]; alert(x); </script>
плюсы / минусы для каждого:
'
и "
) в вашем коде, поэтому любой html будет выглядеть более чистым. Большинство редакторов распознают PHP vars в блоке heredoc и соответствующим образом окрасят их , но остальная часть текста будет обрабатываться как текст, поэтому javascript / html выглядят одинаково. Кроме того, вы не можете вставлять вызовы функций в текст. Вы должны сделать это до начала heredoc и сохранить результаты в var, что может быть вставлен. HEREDOC также может использоваться для непосредственного назначения длинных текстовых блоков в переменную. htmlspecialchars()
, urlecncode()
, html_strip_tags()
и т. urlecncode()
, Не html_strip_tags()
значения в промежуточном var. Это также делает более сложный код, так как ваш PHP теперь посыпается случайным образом через html / javascript-код. Все это сводится к тому, что проще всего для конкретного кода, над которым вы работаете.
Вы можете использовать шаблон model-view-controller для вывода JavaScript.
У вас может быть файл «view», в котором хранится большая часть вашего JS:
myJavascript.js.php:
alert('hello bob'); alert('hello <?php echo $name; ?>'); alert('whats up?');
Ваш контроллер, jsController.php:
$name = "Jane";