Кавычки в PHP / JS / DOM - PullRequest
       1

Кавычки в PHP / JS / DOM

2 голосов
/ 20 марта 2012

Как правильно использовать кавычки?

echo 'string' . $variable . 'anotherstring'; 

или

echo "string" . $variable . "anotherstring";

проблема, конечно, обнаруживается, когда нам нужно напечатать, вернуть или повторитьquotaion mrk само по себе ...

$output = '<div class="' . $class . ' " style =" ' . $style . ' ">' ;

или

$output = "<div class=' " . $class . " ' style =' " . $style . " '>" ;

??

А как насчет того, когда какой-нибудь jQuery или Javascript входит в игру ??

function o99_print_front_script() {
    return '
    <script type="text/javascript">
var pluginDir = " '. PHP_CONSTANT_X .' " ; 

  var cluster_styles = [{
        url:pluginDir +"/images/marker-o.png",
        background: "#c6c6c6"
        textColor: "#0f0"
    }];

      jQuery(document).ready(function() {
        jQuery("#example").example_func({
          elements:".div_1 .class_2",
           infobox: true,   
        map_opt: {zoom: 3,
        mapTypeId: google.maps.MapTypeId.ROADMAP},
        infobox_s:s_infobox_k,
        marker_icon:pluginDir +"/images/image_1.png"
});
});
</script>
    ' ;}

ИЛИ

function o99_print_front_script() {
    return "
    <script type='text/javascript'>
var pluginDir = ' ". PHP_CONSTANT_X ." ' ; 

  var cluster_styles = [{
        url:pluginDir +'/images/marker-o.png',
        background: '#c6c6c6'
        textColor: '#0f0'
    }];

      jQuery(document).ready(function() {
        jQuery('#example').example_func({
          elements:'.div_1 .class_2',
           infobox: true,   
        map_opt: {zoom: 3,
        mapTypeId: google.maps.MapTypeId.ROADMAP},
        infobox_s:s_infobox_k,
        marker_icon:pluginDir +'/images/image_1.png'
});
});
</script>
    " ;}

Есть ли какие-то спецификации для этого?Какой-то стандарт?какая-то «лучшая практика»?

Просматривая код, вы можете увидеть все виды примеров.

какой из них мы должны использовать для «первого уровня», а какой для «второго»?И что, если мне придется «вложить» 3 уровня из этих ??

, эта проблема высвечивается, когда кто-то использует CMS или систему с «плагинами» - и затем хочет расширить ее собственным кодом.HTML-код в DOM запутывается, и вы не можете понять, какие цитаты какие, особенно когда задействован JS).

Я знаю, что все они будут работать, но я хочу знать, какой из них правильныйи что является неправильным (если такие термины существуют в отношении этого).

РЕДАКТИРОВАТЬ I

После прочтения комментариев / ответов - я понял, что, возможно, я написал вопрос внеясная мода.Мой вопрос касается Выведенного xHTML / JS.Конечно, это имеет прямые последствия для части PHP, но в основном мне было интересно, как лучше поддерживать согласованный и униформный код в готовом документе при сохранении простого синтаксиса в бэкэнде.Даже если посмотреть на источник этой самой страницы здесь (на этом сайте stackexchange), можно увидеть какое-то непоследовательное поведение (по крайней мере для меня это выглядит так)

Ответы [ 6 ]

3 голосов
/ 20 марта 2012

О вложении разметки Я настоятельно рекомендую принять MVC pattern, чтобы вы получили четкое разделение представления (ваш HTML-шаблон) от части контроллера (что вы должны поместить в шаблон).Таким образом, вы можете избежать создания «супа» из недопустимой разметки и php-кода

В любом случае для части разметки я предпочитаю писать так:

echo "string $variable anotherstring";

, так как переменные PHP анализируются при включениив строке с двойными кавычками.Для длинных блоков кода, таких как часть javascript, другая возможность заключается в использовании HEREDOC syntax, чтобы вы могли писать переменные php следующим образом

$jssnippet = <<<EOJS
   <script type='text/javascript'>
   var pluginDir = '{$PHP_CONSTANT_X}' ; 
   ...
EOJS;

См. Также http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc надеюсь, что это поможет

1 голос
/ 20 марта 2012

Существует несколько способов объявить и использовать строковые литералы . Это не займет много времени, прежде чем вы начнете смешивать все такие методы в вашем коде. Лично я предпочитаю использовать строки в двойных кавычках почти везде, даже если для этого нужно написать:

"<div foo=\"" . bar() . "\">\$blah</div>";

Строки в двойных кавычках позволяют использовать переменные внутри строк.

Как и в примере, который вы упомянули выше, есть лучшие, более удобочитаемые способы сделать это, например:

function k99_print_front_script() {
    ob_start();
    ?>
    <script type='text/javascript'>
        var pluginDir = '<?php echo PHP_CONSTANT_X; ?>'; 
        var cluster_styles = [{
            url:pluginDir +'/images/marker-o.png',
            background: '#c6c6c6'
            textColor: '#0f0'
        }];
        jQuery(document).ready(function() {
            jQuery('#example').example_func({
                elements:'.div_1 .class_2',
                infobox: true,   
                map_opt: {zoom: 3,
                mapTypeId: google.maps.MapTypeId.ROADMAP},
                infobox_s:s_infobox_k,
                marker_icon:pluginDir +'/images/image_1.png'
            });
        });
    </script>
    <?php
    return ob_get_clean();
}

Что касается вашего вопроса о том, существует ли стандарт или нет, я рассматривал несколько форматеров кода PHP, которые привели меня на эту страницу: Руководство по PEAR - Стандарты кодирования . Мне не удалось найти рекомендации по строкам, хотя в примерах последовательно использовались ' заключенные строки.

1 голос
/ 20 марта 2012

посмотрите на этот пример

  echo "<a href='javascript:dosomething(\"isn\'t it a good day?\");'></a>";

Основная идея заключается в том, что внутренние кавычки не должны мешать родительским.

1 голос
/ 20 марта 2012

Если вы используете двойные кавычки, PHP попытается оценить, что находится внутри строки, где одинарные кавычки воспринимаются как литерал, так как производительность зависит от того, используете ли вы одинарные кавычки, это быстрее.

0 голосов
/ 20 марта 2012

Для HTML и Javascript он предпочтителен, но PHP отличается.

В HTML атрибуты тега могут быть либо двойными, либо одинарными кавычками - это определено в спецификации .Если вы проверяете источники страниц, большинство людей, кажется, используют двойные кавычки, но ничто не мешает вам использовать одинарные кавычки.

В Javascript нет причин использовать одну больше, чем другую - действительно, использование кажетсябыть довольно расколотым.Одно замечание, которое вы заметили, заключается в том, что если вы дважды заключаете в кавычки свои атрибуты HTML, то одинарные кавычки в строках Javascript означают, что вы можете использовать встроенный Javascript, не нарушая свой обычный стиль.Например, <a href="alert('Hello, world')">.Хорошее введение доступно здесь .

PHP отличается, однако.Строки в двойных кавычках анализируются для переменных, что требует дополнительных затрат.Это не будет большой утечкой, но это, безусловно, хорошая практика.В PHP

$string = 'This is my ' . $variable;

и

$string = "This is my $variable";

производят эквивалентный вывод.По этой причине более эффективно использовать одинарные строки в кавычках в PHP или научиться использовать двойной синтаксис строки в кавычках , когда это необходимо.

В конце концов, все зависит от вас, ноэто нормы.Вы не будете оштрафованы, если отклонитесь от стандартного использования, но важно понимать все последствия, особенно с PHP.

0 голосов
/ 20 марта 2012

для php имеет значение, используете ли вы " или '.' более производительный, чем ", потому что он не будет анализировать строку для проверки переменных на предмет замены.

Что касается Javascript - используйте те, которые вам нравятся ... JS не волнует.Это облегчает задачу, если вам нужно использовать кавычки внутри строк, просто используйте оба var mystring = "I said 'Hello World!'";.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...