0

繰り返しのプロジェクトで使用する新しい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>';
 ?>

このコードをさらにスリムでクリーン、そしてより迅速にする方法についての提案はありますか?前もって感謝します!

編集:MySQLバージョン:4.1.22

4

3 に答える 3

0

コードが遅いことをどうやって知っていますか?あなたのプロファイラーはコードについて何と言っていますか?どのステートメントがそれを遅くしていますか?どのプラットフォームを使用していますか?mysqlのバージョンは何ですか?このカタログにはいくつのテーブルがありますか?時期尚早の最適化に苦しんでいますか?

于 2009-05-14T01:33:20.203 に答える
0

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>';
于 2009-05-14T01:48:42.477 に答える
0

コードは悪くありません。読みやすさの向上の1つは、「while」構造内にmysql_fetch_rowを含めるのではなく、データベースから配列を構築することです。これにより、ループに入る前に不要な名前を除外することもできます。配列にucwordsメソッドをマップして、whileループ構造からこれを取り除くこともできます。二重引用符についてのポイントは有効ですが、これは実際にはここで感知できるほどの違いをもたらさないので、読みやすさのために別々のエコーステートメントを保持します。

お役に立てば幸いです。

于 2011-04-11T15:29:18.543 に答える