Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> инклуд из строки, а не из файла 
V
    Опции темы
Ant0ha
Дата 7.2.2010, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Как мажно подключить в скрипт строку,  а не файл? 
То есть вместо include 'test.php'; 
Прописать что-то вроде
include_string "<?php echo 'тест'; ?>"; 
PM MAIL   Вверх
Ant0ha
Дата 7.2.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Варианты с "переподвыподвертыванием" тоже подойдут =)
PM MAIL   Вверх
awers
Дата 7.2.2010, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



eval('...');

Добавлено через 9 минут и 13 секунд
Помогло?
PM MAIL WWW ICQ Skype   Вверх
Ant0ha
Дата 7.2.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



То что нужно, спасибо.
PM MAIL   Вверх
nerezus
Дата 7.2.2010, 23:00 (ссылка) |  (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



99,9%, что твоя задача неверно поставлена.
И ты решаешь не то, что тебе нужно.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ant0ha
Дата 12.2.2010, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Задача поставлена как нужно, сейчас проверил с eval() - не то... Мне нужно весь сценарий из файла прочитать в строку, внести изменения "на лету" и выполнить изменнный код из строки. Такое вообще возможно?

Это сообщение отредактировал(а) Ant0ha - 12.2.2010, 10:55
PM MAIL   Вверх
Ипатьев
Дата 12.2.2010, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



А можно поинтересоватьс, по каким критериям определяется, что "Задача поставлена как нужно"? Богатый опыт? Большая теоретическая подготовка? 

PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



А можно мы будем общаться по теме?
PM MAIL   Вверх
Ипатьев
Дата 12.2.2010, 11:17 (ссылка) |  (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Можно.
Когда мы увидим в теме смысл.
Пока мы видим вопрос мальчика из песочницы, который нашел крысиный яд, и хочет сделать из него пирожки.
При этом мальчик мнит себя директором ресторана. 
Когда взрослые люди говорят ему бросить бяку, он просит общаться по теме.

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

Это сообщение отредактировал(а) Ипатьев - 12.2.2010, 11:17
PM MAIL   Вверх
Sentox
Дата 12.2.2010, 11:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



Сохранить изменённую строку в temp_file.php и подключить его.

Это сообщение отредактировал(а) Sentox - 12.2.2010, 11:32
PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Ну, хорошо, "дяденька". Есть простой шаблонизатор, суть его заключается в замене "<?php echo " на "[*="; "<?php" на "[*"; "?>" на "*]"
То есть, чтобы в шаблоне не писать <?php echo $var; ?> прописать просто [*=$var*] (Что очень облегчает создание и восприятие шаблона). Сейчас шаблонизатор делает данную замену, сохраняет полученный код в файл, а затем уже подключает готовый код в сценарий и выполняет его. Я хочу обойти сохранение кода в кэш, заменить всё на лету и выполнить код из строки. Как вам такая постановка вопроса?)
PM MAIL   Вверх
Sentox
Дата 12.2.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Код

<?php

eval('<?php echo "test" ?>тест');

?>


В результате:
Parse error: syntax error, unexpected '<' in /opt/lampp/htdocs/soomer-dc/test.php(3) : eval()'d code on line 1
PM MAIL   Вверх
Sentox
Дата 12.2.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


как то так
**


Профиль
Группа: Участник
Сообщений: 392
Регистрация: 27.1.2009
Где: Зимбабве

Репутация: 7
Всего: 7



eval('<?php echo "test"; ?>');
При использовании eval() необходимо помнить о нескольких вещах. Запомните, что передаваемая строка обязана быть правильным кодом PHP, включая окончание операторов точкой с запятой, чтобы разборщик не отвалил на строке после eval(), и правильное escap-ирование в code_str.
PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Да, это понятно, но код ругается на <?php, вот в чем проблема, т.е. code_str не должна содержать <?php, ?>, ей нужен просто код, как если бы он был между <?php и ?>. Поэтому eval и не подходит...
PM MAIL   Вверх
Ипатьев
Дата 12.2.2010, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(Ant0ha @  12.2.2010,  11:33 Найти цитируемый пост)
Как вам такая постановка вопроса?) 

Бессмысленная.
Я не понимаю, зачем делать два действия вместо одного.
Если мы заменяем что-то в шаблоне, то почему бы сразу [*=$var*]  на содержимое переменной $var и не заменить?

Добавлено через 2 минуты и 9 секунд
Не вижу, кстати, никакой принципиально разницы в восприятии между 
[*=$var*]
и
<?=$var?>
ну никакой, абсолютно
PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



1. Как я уже сказал измененный шаблон кэшируется, а потом берется из кэша и замена в последующие разы не выполняется.
2. Вы вроде бы и не новичек давно, а почему то элементарного не знаете.

Код

По умолчанию короткие теги не используются, их нужно специально активизировать. Это можно сделать двумя способами: 
указать ключ -enable-short-tags при компиляции РНР; 
включить параметр short_open_tag в файл php.ini.


Шаблонизатор ни для одного проекта и сервера делается, постоянно включать короткие теги для новых проектов будет ужасно не удобно, да и <?=$var?> лично мне не нравится.

3. Вопрос изначально стоял как: Возможно ли такое, если да то как? Если нет, я буду работать по старому. Еще раз говорю, пишем по делу, а не пытаемся как то доказать свое превосходство, Ипатьев.


PM MAIL   Вверх
nerezus
Дата 12.2.2010, 13:20 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Шаблонизатор ни для одного проекта и сервера делается, постоянно включать короткие теги для новых проектов будет ужасно не удобно
 А у вас вообще до этого были проекты на $100+?
Просто вопрос.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ипатьев
Дата 12.2.2010, 14:54 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Мне не нужно доказывать свое превосходство smile
Тем более, что мы говорим совсем не о нем. Речь, скорее, о разнице в опыте.
Человек (и не один в этом топике), который видел всякие шаблоны и способы их применения, может посоветовать тому, кто изобретает велосипед в первый раз. Я не вижу в этом ничего плохого. 
Когда начинающий считает свое мнение единственно правильным - вот это да, это, как мне кажется, достойно порицания.

Проблема явно высосана из пальца. 
Если вместо изобретения странного шаблонизатора вы бы воспользовались готовым - например Смарти - то проблем бы, как и потенциальной угрозы безопасности, в принципе не возникло бы



PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Смарти я использовал и использую в некоторых проектах (т.к. этого требует заказчик), но по сути шаблонизатор типа [*= - это тот же обычный php, который используется в тех же code-igniter, joomla, bitrix и т.д. (который подходит мне больше, чем смарти), только упрощает написание и восприятие шаблона... никакого велосипеда тут нет.

З.Ы. на заметку http://larin.in/archives/16
PM MAIL   Вверх
Ипатьев
Дата 12.2.2010, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Велосипед есть.
Обычного РНР я здесь не вижу.
Вот автор по ссылке выше пишет, что не имеет смысла изобретать синтаксис [**], если можно написать <?php echo $title?>
НО ЕСЛИ уж нам ударила в голову такая идея - то это смарти и получается. Изобретаемый заново велосипед.

Добавлено @ 15:27
кстати, вспоминая смарти
если уж в нашем воображении "измененный шаблон кэшируется, а потом берется из кэша и замена в последующие разы не выполняется" - то никакой проблемы я не вижу вовсе. вообще. 
Зачем тут же выполнять измененный шаблон, если он все равно запишется в файл и потом исполнится обычным порядком? Ровно точно так же, как это делается в смарти, и никакое исполнение на лету при этом не требуется


Это сообщение отредактировал(а) Ипатьев - 12.2.2010, 15:39
PM MAIL   Вверх
Ant0ha
Дата 12.2.2010, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 25.3.2009

Репутация: 1
Всего: 2



Проблема в том, что при изменении изначального шаблона, необходимо обновлять кэшированный шаблон. Но это уже другая история. Думаю, тема исчерпана.
PM MAIL   Вверх
Ипатьев
Дата 12.2.2010, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Смарти это делает автоматически.
Еще одна причина не изобретать велосипед
PM MAIL   Вверх
Fortop
Дата 12.2.2010, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 20
Всего: 42



Ant0ha
Так все же в чем вопрос и проблема топика? 

Началось все с этого -
Цитата(Ant0ha @  7.2.2010,  19:45 Найти цитируемый пост)
Как мажно подключить в скрипт строку,  а не файл? 
То есть вместо include 'test.php'; 
Прописать что-то вроде
include_string "<?php echo 'тест'; ?>";  


Продолжилось этим -
Цитата(Ant0ha @  12.2.2010,  10:33 Найти цитируемый пост)
Я хочу обойти сохранение кода в кэш, заменить всё на лету и выполнить код из строки

А смысл? 

А кончилось этим -
Цитата(Ant0ha @  12.2.2010,  15:28 Найти цитируемый пост)
Проблема в том, что при изменении изначального шаблона, необходимо обновлять кэшированный шаблон.Но это уже другая история





--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
segrey
Дата 12.2.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



Цитата(Ant0ha @ 12.2.2010,  08:54)
Задача поставлена как нужно, сейчас проверил с eval() - не то... Мне нужно весь сценарий из файла прочитать в строку, внести изменения "на лету" и выполнить изменнный код из строки. Такое вообще возможно?

ну измени строку на лету и засунь в eval.
PM MAIL   Вверх
awers
Дата 12.2.2010, 19:28 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Ant0ha, что то ты там не то делаешь. Сначала мне показалось что тебе для экспериментов это надо.
Запомни юный падаван: евал = зло
PM MAIL WWW ICQ Skype   Вверх
Elfet
Дата 14.2.2010, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Ant0ha, тоже выбирал между eval и include. 
 вот, на хабре обсуждают Eval и Include: http://habrahabr.ru/blogs/php/24038/  - выбрал Include  smile


--------------------
PM MAIL WWW Skype   Вверх
IZ@TOP
Дата 15.2.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Да, это клиника. 
Кто с эвалами зачем-то сюда идет, не почитав тему, а автору - так вообще респект. Smarty изобретать не нужно - он уже есть.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.