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

代码还不错。可读性的一项改进也是从数据库构建一个数组,而不是在“while”构造中使用 mysql_fetch_row。这也将允许您在进入循环之前过滤掉不需要的名称。您还可以在数组上映射 ucwords 方法,从而将其从 while 循环结构中取出。关于双引号的观点是有效的,但我会保留单独的 echo 语句以提高可读性,因为这在这里并不会真正产生明显的差异。

希望有帮助。

于 2011-04-11T15:29:18.543 回答