1. PHP / Говнокод #2165

    +160.4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <?php 
    // ...
    $vars = get_class_vars($class_name);
    		if(is_array($vars)) {
    			foreach($vars as $var => $val) {
    				eval('$this->' . $var . ' = \'' . $val . '\';');
    			}
    		}

    некакая UNI-CMS
    это не самое худшее. что я там нашел ... в общем мрак... (

    Запостил: nicolay-punin, 22 Ноября 2009

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

    • а нафига?
      Ответить
    • Что-то маразмом попахивает.
      Ответить
    • вот такое взаимодействие между классами как-то на стрём подсаживает $vars = get_class_vars($class_name);

      if(is_array($vars)) foreach($vars as $var => $val) - проверили - и гуд

      а вот eval здесь явно лишний.
      Ответить
    • Проверка на массивоность не понятна. get_class_vars - выдает всегда массив.

      А вот что понапихано в свойства непонятно, может там какие формулы или структурки языковые?
      Ответить
    • Судя по логике, этот кусок кода просто копирует все поля переданного объекта ($class_name) в текущий.
      В принципе, ничего быдлокодового не вижу, хотя проверка is_array() явно избыточна.
      Но минусовать не буду.
      Ответить
      • ну вы даете...

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

        про безопасность при использовании eval я вообще молчу... оно открывает новые просторы для разны php-иньекций...

        про отладку таких вещей я вообще молчу...
        Ответить
        • Использование eval() - не признак говнокода. Это признак неправильного дизайна системы
          Ответить
      • Тут, вроде бы всё хитрее, обстоит... Функция отдаёт все предустановленные поля класса. То есть, с конкретным объектом эта функция не связана.
        Это скорее похоже на попытку реализовать некое отражение и построить тип во время исполнения. Для php4, где, кажется, рефлекций нет, это некоторый "выход" для тех, кто активно отражениями ранее пользовался в других языках.

        Конечно, по такому короткому куску невозможно судить о "намерении"...
        Ответить
      • добавлю $this->{$var} = $val; заместо eval()
        Ответить
    • табуляции пробелами не учили?
      Ответить

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