"PHP" / Говнокод #5825 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
<?php
 $Options = file("OPTIONS.txt");
 foreach ($Options as $opt)
        {
        $opt = trim($opt);
        eval("$".$opt.";");
        }

Запостил: qbasic qbasic, (Updated )

Комментарии (24) RSS

  • Загрузка настроек в формате ключ=значение командой
    . somefilerc
    в sh -- вполне обычное явление.
    Ответить
  • Да, интересно, а что было бы быстрей
    1. Исходный вариант
    2.
    foreach($Options as $opt) {
        list($var, $val) = explode('=', $opt);
        $$var = $val;
    }

    3. поменять всё на ini-файлы и делать parse_ini_file()
    Ответить
      • не факт!
        по крайней мере в некоторых ситуациях пхп быстрее разбирает текстовые данные, чем инклудит код.
        Ответить
        • да, наверное разобрать ини менее затратно, чем проинтерпретировать хз какой код
          Ответить
          • я как-то тестировал скорость чтения массива из файла, куда он сохранялся 1) через сериализацию и 2) через вставку в пхп-формате с помощью var_export. 3) 4) - уже не помню.
            чтение сериализованного массива оказалась существенно быстрее, чем чтение "родного" пхп-шного объявления.
            Ответить
            • Проводил такие же тесты, пришёл к тому же результату. Следует заметить, что сериализованные данные руками особо не поредактируешь, в отличие от. По быстродействию есть более-менее компромиссный, хотя и не очень удобный вариант, особенно радующий, если конфиг-файлов несколько: хранить в них данные как угодно плюс приделать кэш с сериализацией. После каждого редактирования конфигов кэш удалять, чтобы обновился.
              Ответить
              • можно и так... хотя и сериализованные данные тоже можно руками спокойно ковырять при некоторой сноровке. 🙂
                Ответить
                • ммм... ну тогда создать спец. редактор. Учитывая то, что конфига правится редко, получаем небольшой выигрыш в производительности )
                  Ответить
                  • Кстати, давно хотелось найти редактор, способный работать с сериализованными данными. Но ничего подходящего не видел, а самому писать - как всегда, лень!
                    Ответить
                    • ну, можно же сделать "минимальный" редактор, который умеет:
                      1. десериализовывать данные (загрузка)
                      2. сериализовывать данные (сохранение)
                      3. давать редактировать десериализованные в виде обычного текста
                      4*. дополнительно можно устроить проверку корректности (что бы в процессе интерпретации конфиги не вылез бы досадный fatal error, сыпащий всю аппликацию)


                      скажем, это текстареа с 2-3 кнопками. На такую часовую работу лень не должна успеть среагировать, особенно, если подключить интерес ))
                      Ответить
                      • неее, это не то!
                        я хочу универсальный редактор, способный работать с любой структурой сериализованных данных - произвольные типы данных, произвольная вложенность и т.п... за час не получится, поэтому и лень.
                        Ответить
                        • дофига работы. Сложности почти те же, что и с визивиг-хтмл-редакторами
                          Ответить
                  • Спецредактор тоже как-то писал, в т.ч. со вложенностью, а не просто ключ-значение. Не знаю... неюзабельно как-то показалось. Допустим, есть у нас константа с путём к приложению, и в чистых PHP-конфигах ключи конфигурации с путями к контроллерам, шаблонам, etc заданы с привязкой к этой константе. А если бы мы применяли спецредактор, мы бы константой не попользовались, иначе как %обозначая% её как-то, а в геттере конфигурации заменяя специально написанным str_replace'ом. Для .ini это, впрочем, тоже справедливо. Короче, мне больше по душе чистые PHP-конфиги:
                    <?php return array(...
                    Ответить
                    • Я не совсем о конфигах (т.к. параметры с взаимными зависимостями и правда лучше прописывать обычным образом в пхп), а в целом о хранении некоторых видов информации в файловой системе. Вариантов использования много.
                      Ответить
                    • мм, вообще-то я имел ввиду простой редактор, не визивиг. Визивиг вообще можно придумать навороченный, даже на основе схем (создавать блоки, тянуть стрелочки и т.д.) Работы конечно дофига, стоит ли оно того?

                      а в дополнение к вашему появилось несколько идей:
                      - разрешать комбобоксом выбор типа значения: строка(возможно подходящая под заданный регексп), список(выбор значений), число(целое, дробное...), выражение. Выражение - значит любой пхп код, где можно использовать и константы, и вообще что угодно
                      - для хранения значений использовать спец.обьект (например, сваял http://pastebin.com/06iB1wz5 - еще не до конца) и использовать наследование разделов конфигураций. Тогда проблема копипасты несколько отодвигается )


                      Хотя, поскольку я обычно настройки храню в базе (и примитивный редактор из адмишки), либо в пхп-файле, и рассчитываю, что редактирующий точно знает, что делает, то спецтулзы не нужны
                      Ответить
  • Судя по всему: Его говнокоды (82)
    qbasic офигительно встрял по полной программе...
    Ответить
    • да, у меня и то поменьше.
      а чьих говнокодов, кстати, больше всего? = ) можно даже топ-10 юзверей вывести ))
      шерстить всех утомительно, вот Страйко бы наверное одним запросом к базе вычислил )))
      Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8