LINUX.ORG.RU

PHP сокращенная запись


0

0

Задался вопросом - насколько безболезненно можно использовать

<?=$something?>

вместо

<?php echo $something ?>

Параметр short_open_tag вроде включен почти везде, для меня лично это даже не принципиально, т.к. пользуюсь либо VPS либо напрямую серваком каким-нить (т.е. все настраиваю сам).

Нагуглил что это не приветсвуется, но не очень понял почему - ведь вроде удобней. Главная цель использовать запись попроще в нативном шаблонизаторе.

Или как вариант делать string replace файла с шаблоном и использовать свою придуманную конструкцию.

Кто сталкивался, кто как может быть делает в своих проектах, интересно узнать. Спасибо!

Такое не надо использовать. За такое надо просто бить молотком по пальцам. Ну и вообще, выносить теги из кода программы (а если они не вынесены, то весь код находится в одних скобках, и подобных вопросов не возникает) неправильно.

Gryzchick
()
Ответ на: комментарий от Gryzchick

Gryzchick, спассибо но
Не совсем понял ваще объяснение, на практике эти 2 подхода делают одно и тоже, просто запись короче. Вопрос совместимости от настройки сервера я упоминул. Вопрос производительности, возниконовение побочных явлений я незнаю поэтому и спрашивал.

Немного в сторону от вопроса: для простенького шаблонизатора лучше использовать стандартный вывод через <?php echo ... ?> или сделать парсер и свою запись типа {...} например?

Megamozg
() автор топика
Ответ на: комментарий от urxvt

Да. И чужой код приходилось править. Когда попадается что-то, вроде «<!DOCTYPE> <html> <head> </head> <body> <?php echo $somevar; echo $thatsomevar; echo $thirdsomevar; ?>», как-то поневоле понимаешь, почему этот язык считают быдлокодерским.

Gryzchick
()
Ответ на: комментарий от Gryzchick

> Ну и вообще, выносить теги из кода программы (а если они не вынесены, то весь код находится в одних скобках, и подобных вопросов не возникает) неправильно.
Код не может находится в одних php-скобках никак, разве что использовать сторонний шаблонизатор.

Когда попадается что-то, вроде «<!DOCTYPE> <html> <head> </head> <body> <?php echo $somevar; echo $thatsomevar; echo $thirdsomevar; ?>»

Как бы сделали Вы?

Я бы так:
<body>
<?=$somevar?>
<?=$thatsomevar?>
<?=$thirdsomevar?>
оторвать мне пальцы. :)
У Вас получится без вставок похппе в хтмл?

urxvt ★★★★★
()
Ответ на: комментарий от xorik

Тоже не вижу ни одной причины от этого отказываться.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

У Вас получится без вставок похппе в хтмл?

<?php echo "<!DOCTYPE> <html> <head> </head> <body> $somevar $thatsomevar $thirdsomevar"; ?>

:)

madgnu ★★★★★
()
Ответ на: комментарий от Gryzchick
<?php
echo
"<body>",
$somevar,
$thatsomevar,
$thirdsomevar;
?>

Вот за _это_ надо вообще убивать. Сразу и без раздумий.

Deleted
()
Ответ на: комментарий от urxvt

Спасибо за все вменяемые ответы.
Все таки небольшое дополнение: кто как использовал бы в своих проектах:
1. обычным выводом <?=...?> (<?php echo ...?>)
2. парсил некий шаблон например в котором есть {var} через str_replace
3. создал в классе шаблонизатора методы для вывода и делал примерно так $this->print(...) (в это случае можно добавить методы для вывода определенных элементов например жирного текста, ссылок). Возможно это через чур, но может быть удобно я думаю.

Megamozg
() автор топика
Ответ на: комментарий от Gryzchick

Убивать надо тех, кто мешает разметку с кодом. Вот за такое просто сразу решительно к стенке ставить.

Тогда тебе следует немедленно убить себя.

Deleted
()
Ответ на: комментарий от Gryzchick

Gryzchick
У вас специфический взгляд какой-то, по вашему как передавать данные в разметку?

Megamozg
() автор топика
Ответ на: комментарий от Megamozg

>1. обычным выводом <?=...?> (<?php echo ...?>) 2. парсил некий шаблон например в котором есть {var} через str_replace

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

Например если разделить логику и вывод, то, в общем-то, пофигу, происходит вывод через <?=...?> или через {...}. Главное - не совать без надобности логику в шаблон, ограничиваться простыми вещами. Можно даже соорудить подобие MVC.

Главное чтобы шаблон был читаемый.

anonymous
()
Ответ на: комментарий от Megamozg

> Все таки небольшое дополнение: кто как использовал бы в своих проектах:
Это зависит от ситуации. Можно <?=...?> или Smarty прикрутить.
А вообще я бы настоятельно рекомендовал сразу использовать фреймворки. В каждом своя политика вставки кода в шаблоны, но как правило она <?php echo ...?>.

urxvt ★★★★★
()
Ответ на: комментарий от Deleted

Ну почему же, у меня все чисто, скрипт генерирует код на HTML, который отдается браузеру.
Если вы выносите теги за пределы скрипта, то это, конечно, беда. Ну ничего, потом поймете, почему

<?
echo head(«title: title»,
                    «stylesheet: style/css»
                    «javascript: jscript.js»);
?>

юзабельнее и правильнее, чем эти ваши грязные хаки для интерпретатора.

Gryzchick
()
Ответ на: комментарий от Gryzchick

Gryzchick
Вот то, что вы только что написали это точно беда(

anonymous
Именно как раз и есть своя реализация паттерна MVC, тут как я и говорил вначале больше эстетический вопрос.

urxvt
Спасибо, смотрел фреймворки, цель вопроса понять как оно работает получше и поудобнее вне готового решения на базе фреймворка.

В итоге получаем наверно что вывод через <?php echo ?> более просто сделать, здесь же можно впихнуть циклы.
А вывод типа {IF}{VAR}{/IF} (или с {FOR}...) более удобен взгляду как мне кажется.
Но в варианте с echo нам надо только подгрузить шаблон, а во втором варианте: подгрузить - отпарсить - передать на вывод.

Megamozg
() автор топика
Ответ на: комментарий от Megamozg

> Спасибо, смотрел фреймворки, цель вопроса понять как оно работает получше и поудобнее вне готового решения на базе фреймворка.
Ммм... Это достаточно интересный вопрос. Думаю у каждого свои пути и подході к обучению. Мне, например, знакомство с пару фреймворками дало увидеть как делают люди, до того я достаточно долго писал практически не зная про их существование.

urxvt ★★★★★
()

во вменяемых хостингах безопасно. В других, возможно, нужно будет лечить в .htaccess через ini_set

true_admin ★★★★★
()
Ответ на: комментарий от Megamozg

> Но в варианте с echo нам надо только подгрузить шаблон, а во втором варианте: подгрузить - отпарсить - передать на вывод.
Например, Smarty, компилирует свой шаблон в php-файл только раз. И уже парсить второй раз его не приходится. Конечно, он будет не настолько эффективным как самописный, но плюсы/минусы есть кругом.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

urxvt
Аналогичная ситуация у меня, до того как узнал что такое паттерны проектирования, суть интерфейсов - писал на хиленьком ООП. Затем гуглил\читал именно про паттерны, про архитектуру и смотрел фреймворки (не очень глубоко) понял более менее принципы и теперь совсем другой подход пытаюсь делать.

Megamozg
() автор топика
Ответ на: комментарий от urxvt

На счет компиляции шаблонов: я думаю стоит реализовывать и на самописном. Тривиально так: отпарсили шаблон - записали его в файлик - отдаем пользователю только скомпиленную версию (но тут тоже не очень понятно как это реализовать правильно)).

Megamozg
() автор топика
Ответ на: комментарий от Megamozg

Думаю как-то так:

// псевдокод функции рендер
if (шаблон не найден в кэше)
    скомпилить и положить в кэш.

отобразить из кеша (грубо говоря это простой инклуд).
urxvt ★★★★★
()
Ответ на: комментарий от isden

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

Megamozg
() автор топика
Ответ на: комментарий от Megamozg

> Я не говорю что Smarty плохой, им пользуются, им можно пользоваться и возможно даже удобно.

другие шаблонизаторы посмотри, Flexy хотя-бы. есть вообще совсем легкие.

вопрос носит больше обучающий характер для понимания как это устроенно


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

isden ★★★★★
()
Ответ на: комментарий от Megamozg

кстати, если пишешь на чистом ООП, рекомендую Flexy. простое и удобное. без лишней логики как Smarty.

isden ★★★★★
()
Ответ на: комментарий от Gryzchick

>Да.

Судя по всему, Вы на PHP писали именно на быдлокодерском уровне :) Ну, может, чуть-чуть выше.

PHP может выступать в роли готового и быстрого шаблонного движка. В этом случае MVC/ORM/etc/много-умных-слов система может просто использовать PHP-шаблоны вместо тех же Smarty/Twig/Quicky. И тут сокращённая запись очень даже уместна.

А во всех остальных случаях и длинная запись нафиг не нужна. Ибо каждый PHP-файл - чистый код от самого начала и до конца.

KRoN73 ★★★★★
()
Ответ на: комментарий от Gryzchick

>Надо без вставок хтмл в похппе.

echo «<body>»,


Во-первых, Вы уже противоречите себе.

Во-вторых, сорри, поспешил Вас чуть поднять над средним уровнем.

echo «<body>» - это уже говорит об уровне почти всё :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Megamozg

>кто как использовал бы в своих проектах:

4. Естественно использовать отдельный, настраиваемый и заменяемый шаблонный движок. Код готовит данные и скармливает их и шаблон - шаблонизатору. А уж в его роли может выступать любой популярный механизм.

KRoN73 ★★★★★
()
Ответ на: комментарий от Gryzchick

>Убивать надо тех, кто мешает разметку с кодом

Это про echo «<body>»? Как самокритично! :D

KRoN73 ★★★★★
()
Ответ на: комментарий от Gryzchick

>echo head(«title: title», «stylesheet: style/css», «javascript: jscript.js»);

А дизайнера/верстальщика тоже будешь до PHP-кода допускать? Или верстать всё сам будешь?

Тяжёлый случай. Но с опытом - проходит :D

KRoN73 ★★★★★
()
Ответ на: комментарий от Megamozg

у меня было решено редактором шаблонов в админке. при сохранении кеш сбрасывается.
в ezpublish, например, решено кнопкой сброса кеша.
таймстампы - тоже вариант, для небольших проектов.

iSage ★★★★
()

Стараюсь использовать смарти.

В обычном веб приложении стоимость работы темплейта намного ниже стоимости бизнес логики самого приложения(я про время выполнения).

Издержки смарти против phptemplate(это то что вы описали типа <?php echo $variable;?>) получаются достаточно небольшие. Однако удобство использования смарти перевешивает.

Для общей информации: phptemplate активно используется в друпале - это движок по умолчанию. Аналог используется в Zend_View.

roller ★★★
()

Я в последнее время юзаю blitz.

boombick ★★★★★
()
Ответ на: комментарий от KRoN73

А дизайнера/верстальщика тоже будешь до PHP-кода допускать? Или верстать всё сам будешь?


Верстальщик пишет свой код. Не надо его заставлять вообще как-то PHP-код трогать.
Меня, конечно, радует это «дизайнера/верстальщика тоже будешь до PHP-кода допускать». Я прямо-таки узнаю золотую свою молодость, операционную систему Microsoft. «Linux - это тяжелая операционная система, в которой надо вводить коды в консоль, и где пользователи должны быть программистами, чтобы нормально работать. Windows - это дружелюбная среда для простых пользователей. Чтобы подключить интернет, надо просто сделать пару кликов мышью. Правда, если вы хотите сделать работу безопасной, пожалуйста, установите антивирус. Кроме того, если вы хотите использовать программы, соединяющиеся с интернетом, вам нужно установить и настроить файрволл. Кроме того...» Или «Windows - это дружелюбная среда для простых пользователей. Чтобы перенести файлик в папку, надо просто сделать пару кликов мышью. Правда, если вы хотите поместить файлик больше 4ГБ, вы должны знать, какая файловая система на вашем жестком диске. Кроме того, если вы хотите скрыть этот файл от какого-то пользователя этого компьютера, вам просто надо исправить системные настройки, для чего наберите в консоли следующую команду:...» Или «Я не допускаю верстальщика до PHP-кода. Он у меня пишет только HTML и все. Правда, если надо вставить дату, то он использует вот такую директиву PHP - »...". Кроме того, если надо сделать вывод таблицы, то ему следует написать вот такой PHP-кодик, потом еще скобочки такие, HTML, потом еще раз скобочки такие опять, еще фигурная скобочка, вот тут кавычечки такие, и еще кодик небольшой на PHP. В общем, у меня простая и логичная шаблонизация, где верстальщик не использует PHP-код".

Gryzchick
()
Ответ на: комментарий от iSage

KRoN73
Вы правы, удобно использовать шаблонный движок, я осознал и набросал примерно что я хотел, все устраивает.
Еще раз спасибо всем за подсказки.

Gryzchick
Вы однозначно либо умнее всех, либо вообще ничерта не понимаете, даже в основах((

Megamozg
() автор топика
Ответ на: комментарий от Gryzchick

Да. И чужой код приходилось править. Когда попадается что-то, вроде «<!DOCTYPE> <html> <head> </head> <body> <?php echo $somevar; echo $thatsomevar; echo $thirdsomevar; ?>», как-то поневоле понимаешь, почему этот язык считают быдлокодерским.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title><?php echo $this->pageTitle; ?></title>
<?php echo CHtml::cssFile(Yii::app()->baseUrl.'/css/main.css'); ?>
</head>

<body class="page"">
<div id="container">
  <div id="content">
      <?php echo $content; ?>
  </div>
</div>
</body>
</html>

И шо тут не так?

bibi
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.