чистый пхп код из базы

Demiurg

Guest
может не стоит придумывать оправдания ? для контроля версиями файлов существуют специальные инструменты.
 

DiTHER

bang bang
Шаблоны в базе данных!
Удобно можно деражать различные версии,
возможен откат на старую версию,
а на файлах сложно несколько версий держать? Полноте...
Не плодим кучу файлов,
зато плодим кучу баз и таблиц (т.е. опять же файлов)
одним запросом достаем нужный шаблон для редактирования.
хы.. а "запросов в файловую систему" ты обычно по несколько делаешь чтобы один файл взять?
Система прав.
Бекап системы (через бекап одной базы!)
сомнительное приемущество, ибо ещё неизвестно что проще (и быстрее)

мнда вот как будто вам больше заняться нечем :)

испольнять "левый" код можно либо eval'ом либо предварительно свалив в файл, после чего обычным инклудом.

eval доставляет просто непередаваемое количество мучений при отладке спустя какой то срок (не верите? разломайте vbulletin).

кешировение перед загрузкой файла таких мучений (почти) не сделает. Однако смысл такого подхода я уже совсем перестаю понимать. База - это те же файлы, только управляет ими не файловая система а движок базы.. Иными словами скорость чтения данных из базы только в редких (не в данном) случае будет быстрее чем напрямую из файловой системы...

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

eddie

Новичок
посмотри на
stream_wrapper_register

я делал include отдельных частей кода из общего контейнера. сделать такое из базы не проблематично

только потестируй при большой нагрузке - у меня core бывало (правда на старенькой версии php ~ 4.1.x)
 

alexon

Новичок
А зачем вообще в шаблоне должен быть PHP код да еще находясь в базе данных?
Пример шаблона:
PHP:
......
<decorator:PageTitle />
<p>
А здесь меню: <decorator:Menu rooturi="" ..... />
</p>
......
Загрузил шалон из базы и распарсил вставленные компоненты шаблона. Я именно так и делаю и никаких проблем никогда не возникает что надо выполнить какой то код, потому что в шаблонах и на страницах сайта никакого кода нет.
Ну, естественно, декораторы написать тебе придется какие требуются... обычно их не так уж и много нужно даже для очень функциональной CMS. У меня, например, их порядка 20 штук.
 

stanlee

Новичок
функциональней пхп кода ничего нет и не будет
если тока не на другом языке программишь :)))

ps
я уже сделал правад всеже с евалом :(
ну и лана зато <?php ... ?>
 

crocodile2u

http://vbolshov.org.ru
stanlee
Ничего, придет время, и ты поймешь, что eval() - зло... Как бы только потом не пришлось все к чертям переписывать...
 

stanlee

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

kvf77

Red Devil
stanlee

нда - а до сих пор ты их не проверял? нда - у мальчика плохо с логикой
 

crocodile2u

http://vbolshov.org.ru
stanlee

При чем тут входящие данные? которые надо _по-любому_ проверять, кстати... И какой-такой гемор? И какое-такое ограничение?
 

stanlee

Новичок
я имел ввиду их более досканально проверять
а насчет файлов
ну у меня тама свои заморочки выж не будете тут портянки читать :)
 

crocodile2u

http://vbolshov.org.ru
Ну дык - это твой гемор, ты его сам себе придумал. И судя по всему, готовишься придумать ещё бОльший...
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: texrdcom
А почему людей не устраивает eval() -?
что вы увидели в нем такого опастного -?
eval() людей устраивает, но нужен он для выполнения сгенерированного кода, а не целых скриптов, которые изменяются редко.

проблемы с ним 2:
1) скрипт, лежащий в файле, можно скомпилировать в байт-код, а код, выполняемый через eval() --- нельзя.
2) если подставлять в сгенерированный код данные, введённые пользователем, то можно создать дыру в безопасности.
 

SiMM

Новичок
> eval() людей устраивает, но нужен он для выполнения сгенерированного кода
И где это (генерирование кода) может быть нужно и без него нельзя обойтись?
 

DiTHER

bang bang
Sad Spirit, маловато будет..

1. Фатальная ошибка в eval'd code вызовет немедленную остановку всего скрипта
2. PHP не может определить где был eval в котором произошла ошибка. Посему вылетает противная ошибка а-ля
Код:
Error in eval'd code on line N
. Попробуйте теперь откопать где ошибка конкретно :).

Ввиду этого другому человеку (либо самому себе, но через годик) который будет копаться в коде - eval - это целые огромные грабли.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: SiMM
И где это (генерирование кода) может быть нужно
Слово "Smarty" о чём-нибудь говорит, ага?

и без него нельзя обойтись?
Обойтись как правило можно, но это, мягко говоря, не всегда упростит решение. Я как обычно привожу пример из практики: на входе имеем имя поля в форме типа foo[bar][baz], на выходе хотим получить значение этого поля из $_GET / $_POST. С eval() решение что называется в одну строчку, без eval() надо делать рекурсивную функцию.
 

SiMM

Новичок
> Слово "Smarty" о чём-нибудь говорит, ага?
Неа, не говорит :) Нет правил без исключений.

> С eval() решение что называется в одну строчку, без eval() надо делать рекурсивную функцию.
Нашли тоже проблему...
 

msdev

Новичок
Автор оригинала: stanlee
ну а как быть если хотса хранить в базе шаб
но ничего не парсить и не пользоваться евалом
Автор оригинала: Фанат
никак
Так действительно никак?
или все же можно зарегистрировать stream wrapper для загрузки из базы, как пишет eddie.
а потом делать include('phpdb://id_phptemplate_from_db');
?
 
Сверху