Могу ли я оптимизировать этот PHP-скрипт для генерации динамической навигации из базы данных MySQL? - PullRequest
0 голосов
/ 14 мая 2009

Я работаю над новой CMS для использования в повторяющихся проектах. В основном этот кусок кода подключается к серверу, захватывает все имена таблиц и использует их для создания простой навигации. Он прекрасно работает для того, что мне нужно, но мне просто интересно, смогу ли я еще больше оптимизировать этот фрагмент кода и сделать его еще проще. Может быть, сделать класс, который может настроить форматирование? И т.д. Я пытался сделать это как можно более "голым".

Единственное, что я хотел бы объяснить, это то, что он проверяет, не является ли имя таблицы «включенным», это таблица по умолчанию, которую использует моя CMS, чтобы знать, какие данные отображать на внешнем интерфейсе как насколько данные.

   <?php

              echo '<div class="dynamic_nav_head">Navigation</div>';
              echo '<div class="dynamic_nav">';
                include('data.php');
                $tables = mysql_list_tables($database);
                  while (list($table) = mysql_fetch_row($tables)) { 
                            if($table!='includes'){
                      echo "<div class='cat'>".ucwords($table)."</div>";
                              echo "<div class='cat_item'>";
                                echo "<a href='?page=read&section=".$table."'>View " . ucwords($table) . "</a>";
                              echo "</div>";
                      echo "<div class='cat_item'>";
                                echo "<a href='?page=add&section=".$table."'>Add New ". ucwords($table) ."</a>";
                              echo "</div>";
                            }  // End If not in Includes.
                  } // End While
              echo '</div>';
 ?>

Какие-либо предложения о том, как сделать этот код еще проще, чище и быстрей? Заранее спасибо!

Edit: Версия MySQL: 4.1.22

Ответы [ 3 ]

0 голосов
/ 14 мая 2009

Предлагаю посетить http://refactormycode.com/

        echo '<div class="dynamic_nav_head">Navigation</div><div class="dynamic_nav">';  // on less echo
        include('data.php');
        $tables = mysql_list_tables($database);
          while (list($table) = mysql_fetch_row($tables)) {     
                    if($table!='includes'){
                          $ucTable= ucwords($table); // just one function call
                           //  just one echo;
                           // you where also using quotes and double quotes backwards

                           echo '<div class="cat">'.$ucTable.'</div><div class="cat_item"><a href="?page=read&section='.$table.'">View ' .$ucTable.'</a></div><div class="cat_item"><a href="?page=add&section='.$table.'">Add New '. $ucTable .'</a></div>';
                    }  // End If not in Includes.
          } // End While
      echo '</div>';
0 голосов
/ 11 апреля 2011

Код не плохой. Одним из улучшений для читабельности также будет создание массива из базы данных, а не наличие mysql_fetch_row в конструкции while. Это также позволит вам отфильтровать нежелательные имена перед входом в цикл. Вы также можете отобразить метод ucwords в массиве, что позволит вам удалить это из конструкции цикла while. Пункт о двойных кавычках является правильным, но я бы оставил отдельные эхо-операторы для удобства чтения, так как это не будет иметь существенного значения здесь.

Надеюсь, это поможет.

0 голосов
/ 14 мая 2009

Откуда ты знаешь, что код работает медленно? Что ваш профилировщик говорит о коде? Какое заявление замедляет его? На какой ты платформе? Какая версия MySQL? Сколько таблиц в этом каталоге? Вы страдаете от преждевременной оптимизации?

...