Здравствуйте! Прошу сразу строго не судить за вопрос, воспользовался поиском перед созданием топика... Я только начал изучать php, во время изучения понял,что php код пишется "<?php *** ?>". Так вот вопрос, в системе Opencart очень много циклов в которых иной синтаксис написания " <?php foreach ($categories as $category) { ?> <== Почему здесь происходит закрытие скрипта? <?php if ($category['children']) { ?> " Искал в интернете, встречал стандартное написание: <?php if ($a > $b) echo "a больше b"; ?> заранее спасибо большое за ответ, хорошего дня P.S. Наверное для кого то этот вопрос окажется банальным, для откроет что то новенькое)
потому, что так написали можно написать и не так, без закрытия это только автору ведомо, что там и где и зачем. Если между ?> и <?php ничего путного нет, то это лишено смысла и сделано по-глупости.
это для того, что бы хоть как-то отделить вёрстку --- Добавлено --- Когда ты будешь с помощью echo выводить вёрстку, где есть куча вложенных блоков и в эти блоки надо класть значение из php переменных (всякие классы, атрибуты), то будешь это всё разделять, с помощью точки, а это очень неудобно. И если будет где-то ошибка, то что бы найти её, уйдёт больше времени, пока разберёшься с этими кавычками и точками.
Так это в шаблонах. ПОтому что там помимо if ($category) есть ещё скрытый вывод, который тоже надо брать в операторные скобки: PHP: <?php foreach ($category as $cat) { ?> Какая нибудь хрень, представляющая html, берётся в операторные скобки, если нужно выводить по условию или в цикле <?php } ?> Хотя лично я в таких случаях использую альтернативный синтаксис (хоть его и грозились одно время выпилить, в шаблонах он удобен): PHP: <?php foreach ($category as $cat): ?> Вместо операторных скобок { можно использовать альтернативный синтаксис <?php endforeach; ?> Но вообще, прежде чем читать исходники Open Cart, неплохо бы что-нибудь почитать про язык. И не берите пример с Open Cart. Движок прикольный, но код там весьма неприятно при этом пахнет.
Хорошо, в дальнейшем так и буду делать!) Пардон --- Добавлено --- Согласен! Хоть и пахнет не очень приятно, но что сделать когда хочется практики с пользой?)) Спасибо огромное за ответ!
Прикольно как раз в данный момент устанавливаю Open Cart. И как раз задача покопаться в кишках его стоит. --- Добавлено --- Лучше фреймворк поковыряй, пользы больше будет.
Нахрена ему фреймворк, если по таким базовым вещам вопросы возникают? @skipik, вот, ковыряй, пока не поймёшь: https://secure.php.net/manual/ru/langref.php
Я в том смысле, что если что-то хочется поковырять - фреймворк будет полезнее чем движок. Ну, а для начала, на самом деле лучше попробовать сделать что-то своё, простое. Ставишь задачу, пробуешь её решить, гуглишь, и снова пробуешь решить))
Базовые материал или нет, но в мануале который Вы скинули нет ответа по этой теме. Его я частенько посещаю...) Повторюсь, в интернете нет ответа на данный вопрос по синтаксису! Задал вопрос того что мне было не понятно "Почему так пишется", мне ответили я понял... В дальнейшем если у кого то будет вопрос подобного рода, сможет здесь найти. Всем огромное спасибо за дискуссию и за мой ликбез)
И так же в самом начале PHP изучения пишут и проходят про даты "<?php echo(date('Y'))?>" не трудная штука, а на многих крутых сайтах (почему то я обращаю на это внимание...) стоит 2014-2017 года...) Это к вопросу о банальных вещах) Всё равно, спасибо огромное @mkramer за подробный ответ)
https://secure.php.net/manual/ru/language.basic-syntax.phpmode.php, https://secure.php.net/manual/ru/control-structures.alternative-syntax.php - про альтернативный синтаксис и смешение html и php в одном скрипте (это, в принципе, было изначальной задачей php, чтоб просто было смешивать код и вёрстку)
Вот я чилиец... В самом тексте про альтернативный синтаксис ничего не написано !Кроме как Вы писали в примере про endforeach... Только там endif... А вот в комментарии 9ти летней давности это есть: Код (Text): It seems to me, that many people think that <?php if ($a == 5): ?> A ist gleich 5 <?php endif; ?> is only with alternate syntax possible, but <?php if ($a == 5){ ?> A ist gleich 5 <?php }; ?> is also possible. alternate syntax makes the code only clearer and easyer to read Теперь я запомню этот момент на дооолго)) Спасибо тебе, добрый человек))
сообщение про циклы, имя и возраст вынесено в отдельную тему https://php.ru/forum/threads/pochemu-ne-rabotaet-kak-nado.69850/