![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
Когда оправдано использование eval ?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
тогда, когда оно оправдано
тогда, когда надо получить гибкость, даже ценой производительности. В первую очередь. Вообще, как сам понимаешь(только непонятно, зачем тогда спрашивать |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Только в особых случаях, когда действительно оправдано использование eval. ЗЫ. Если честно, то совсем не вижу, к чему ты клонишь. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
||||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
Всемогущий, ну ты даешь! Ты что, думаешь набрать набор рецептов?! Это ж на то и творчество - потому что всё определяется конкретной задачей. хочешь - весь код формируешь и выполняешь через eval, хочешь - реализуешь pattern "Команда" через ООП и получаешь ту же самую гибкость. а хочешь - клепаешь кучу php - скриптов с разным функционалом и делаешь include того, что надо. путей - множество. выбираешь сам! |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 32 Всего: 69 |
Один из самого простого и элементарного, это когда например тебе в процессе выполнения нужно унаследовать класс от друго класса, заранее неизвестного. Т.е. делать eval-ом промежуточный класс-посредник. Например:
Вот это например оправданный eval() -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
eval is evil © кто-то
Единственный раз сталкивался с реальной необходимостью юзать eval: надо было написать функцию, которая по строке типа "foo[subarray][subarray][blah]" выдать значение элемента массива: $foo['subarray']['subarray']['blah'] -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
AztEK, А... print ${$str} ???????
Эвал всегда можно чем-то заменить... Всегда можно обойти.. |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
Да, как сказал один умный дядя: "Если в вашей программе необходим эвал, то у вас что-то не так с проектированием".
Я иногда использую эвал - но от лени. В любом из этих случаев можно обойтись без него, но лень-матушка ... Главная проблема эвала в том, что код в эвале никогда никакой ZO не оптимизирует. И еще это допускает вероятную угрозу безопасности. --------------------
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
у меня было - шаблон для fprinf брался из БД. так же(для каждого случая - динамически) определялся список аргументов. Делался eval, чтоб вызвать функцию fprintf с заранее неизвестным числом аргументов. как мне надо было сделать это без eval?
|
|||
|
||||
| Всемогущий |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 25.6.2006 Где: Челябинск Репутация: 5 Всего: 13 |
я не пропал,
я всех внимательно слушаю и внимаю |
|||
|
||||
| szz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1289 Регистрация: 31.5.2005 Где: Moscow, Jerusalem Репутация: 8 Всего: 33 |
skyboy, у меня тоже была абсолютно такая же задача и поначалу ее именно эвалом и решил.
Но потом подумал, и несколько манипуляций со строкой шаблона - и я вообще без printf обошелся в итоге и бе эвала. Справился одними explode и implode --------------------
|
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
я идиот спасибо за наводку! -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
у меня в шаблоне хранятся фразы для мультиязычного фейса, а шаблоном - потому как в разных языках морфология различна. порядок слов и всё такое. кроме того, вмоих фразах бывают ситуации вроде "что-то %1\$s здесь %2\$s и опять вот %1\$s", то есть количество мест для вставки отличается от количества аргументов - вроде как парсинг шаблона в этом случае приведет меня к написанию собственной функции printf, только гораздо более тормознутой Жаль, что нельзя передавать вместо списка аргументов вывода массив аргументов(по крайней мере, у меня не получилось: "printf('%s',array('44444'));" вывело лаконичное "Array") |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
||||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |