Заголовок сообщения: <?php echo $bla; ?> внутри HTML Добавлено: 3 Сентябрь 2005, 11:15:04
Нифига не понимаю...
Внутри класса через fopen/fread открываю php-файл с хтмл-куском. В куске наличествую фразы вроде <?php echo $_SERVER['REQUEST_URI']; ?>. Дальше аналогичным образом открывается шаблон страницы. Потом в шаблоне страницы preg_replace`ом заменяю ^PIECE_OF_CODE^ на вышеописанный только что открытый кусок. Всё это потом в файле index.php эхом выводится. Проблема: пхп-код выводится как обычный текст.
В обычном пхп-файле такого нету, всё в порядке.
Ещё: попробовал внутри класса эхом вывести содержимое только что открытого файла -- такая же фигня.
Либо я где-то очень сильно туплю, либо что-то страшное происходит... *)
(sp), дело не в том, что класс или не класс, а в том, что ты не дал коду исполниться. Нужно заменять не на сам открытый кусок, а на результат его работы. ИМХО нужно Eval сделать. Ну и сам кусок должен быть несколько другим, не "echo", а выражение, которое возвращает строку там должно стоять.
@TSV, за Eval спасибо, однако я из соображений паранойи делаю вместо <?=$bla?> <? echo $bla; ?>. Ведь первое -- менее строгий вариант второго, вроде отсутствия php у открывающего тэга. Впрочем, такой вариант тоже не работал. Eval сейчас буду пробовать.
(sp), не, "=", "return" и "echo" ("print") - все три штуки с разным поведением. В данном случае нужен именно "return", в случае обычного исполнения php-кода - "echo".
использовать eval() - плохой стиль программирование. Т.к. если вы что-то не то напишите в eval() может быть плачевный результат. Я бы перехватывал выходной поток и обрабатывал его...
GreatWeb, можно подробнее? Если я что-то не то напишу в любом другом месте кода, результат тоже может быть плачевным.
Anyway, спасибо за помощь, попробую сделать по-другому.
1. Кто заставляет неправильно использовать eval?
2. Есть вообще в PHP что-то, что не приносит вреда при неправильном использовании?
_________________ We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
Дело не во вреде евал.
А в формулировках и паранойе.
Это, конечно, далеко от Курепина, который евал применяет для борьбы с регистер глобалс, но тоже смешно.
Чебурген, я так (по-длинному) писать привык. С eval() же до сих пор сталкиваться не приходилось.
Бaзиль, require использовать нельзя хотя бы потому, что кусок текста из файла всё равно потом нужно обрабатывать.
Просто использование eval() - считается плохим стилем программированием. Если можно обойтись без него, то не нужно юзать eval().
Это тема довольно известная (на счет eval).
Можно Вашу проблемы решиться по разному. К примеру, инклудить этот файл. Тут могут быть пара пробем. Но Вы их решите сами =)
Можно перехватывать выходной поток и разбирать все что передается браузеру... (фукции ob_...)
Просто использование eval() - считается плохим стилем программированием.
Кем считается?
Цитата:
Если можно обойтись без него, то не нужно юзать eval().
Без него можно обойтись всегда, так что постановка задачи неверна. Правильна постановка: на сколь большие извращения нужно идти, лиш бы не использовать eval?
Решите такую задачу. Нужно создать 1000 функций с именами print1()… print1000(), которые будут печатать квадраты первых 1000 чисел. Попробуйте сделать это без eval()
А с eval() все тривиально:
Код:
<?php for ($i=1; $i<=1000;$i++) eval("function print$i() {echo $i*$i;}"); ?>
В общем все эти споры на счет eval() уже пережеваны во многих книгах.
Решите такую задачу. Нужно создать 1000 функций с именами print1()… print1000()
А более надуменного примера ты породить не смог? В тех случаях, когда в реальной жизни нужно создать функции в рантайме (обычно это означает, что их текст зависит от состояния скрипта), то это удобнее делается через create_function.
Я еще не начанал даже DDDDD если ссылки на мануал у тебя называется "гнуть пальцы", то гну.
Дружок, не стоит так натуралистично косить под дурачка -- это может стать привычкой. Гнутьем пальцев в данном случае названа ситуация, когда на конкретный вопрос отвечают отсылкой к конкретному месту в документации, которое, однако, не содержит ответа на заданный вопрос.
GreatWeb, скажите лучше, где может понадобиться создание тысячи однотипных функций, учитывая тот факт, что однотипность функций уже подразумевает возможность использования их как одну функцию с дополнительным параметром?
Я привел этот пример, как опровержение слов Crazy:
Цитата:
Без него можно обойтись всегда
Acid~Jazz, где может этот пример понадобиться? Да не где. Бываеют задачи, которые решаются только через eval(), но их оочень мало, поэтому, лично я всегда стараюсь не ипользовать эту функцию.
Если автор ститает, что использовать eval() в своей задаче необходимым, то конечно надо юзать eval().
Цитата:
Потом в шаблоне страницы preg_replace`ом заменяю ^PIECE_OF_CODE^ на вышеописанный
Зачем использовать в Вашей задаче preg_replace()? Вам, на сколько я понял, не нужно заменять по конкретному шаблону => логичнее юзать str_replace() которая более чем в 10раз быстрее работает, чем первая... кто еще не знает =)
Acid~Jazz, где может этот пример понадобиться? Да не где. Бываеют задачи, которые решаются только через eval(), но их оочень мало, поэтому, лично я всегда стараюсь не ипользовать эту функцию.
я пришел к веб-программированию с языков более низкого уровня и во мне eval вообще вызывает отвращение. чтобы генерировать конструкцию языка, а потом ее выполнять? это, по-моему, совершенно бессмысленная и неторопливая фишка скриптовых интерпретаторов.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.