• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        php編寫大型網站問題集(from yesky)

        php編寫大型網站問題集(from yesky)

        更新時間:2022-05-06 文章作者:未知 信息來源:網絡 閱讀次數:

        php編寫大型網站問題集


        PHP以其易用性得到迅速的推廣,但易用并不是說就能用好它,實際上許多程序員用它很容易的立一個個WEB應用系統,但又有多少人仔細的考慮過他們的代碼,是否容易維護、是否足夠健壯、否效率足夠高、是否足夠安全,當PHP用于建立大型網站時這些就成為很關鍵的因素。下面我們從較輕微的問題開始討論,直至一些致命的錯誤。共分三部分。
        第一部分、較輕微的錯誤

        一、Printf(),
          該函數主要用來格式化顯示數據。當你要改變某個數據的顯示格式時才使用。
        例如以不同的精度來顯示PI(3.1415926)的值。
        <?php
         /*
         * The three faces of Π
         */

         printf ("Pi is: %.2f


        ", M_PI);
         printf ("Pi is also: %.3f


        ", M_PI);
         printf ("Pi is also: %.4f


        ", M_PI);
        ?>

          但許多程序員僅僅為顯示一些變量值和函數返回值使用該函數。因為Printf()在顯示數據前要先格式化該數據以速度較慢,因此,僅為了顯示數據時應用print和echo,以提高速度。

        二、語意檢查
          PHP是一種弱類型語言,也就是說在使用一個變量前不用定義,這樣給編程帶來了很大的方便和靈活,但你自己必須知道該變量到底應該是哪種類型,因為該變量在運行時仍實際對應著某一種類型(各種類型之間可以自由互相轉換),沒有類型的變量是不存在的。有可能PHP并不能檢查出你的語意錯誤,但由于變量類型的變化,會導致一些潛在的問題的發生。另外一個值得注意的問題是變量的范圍,它也可能會導致一些潛在的問題的發生。
        在PHP中有以下幾種基本變量:
        Boolean, resource, integer, double, string, array and object。

        三、臨時變量的使用
          臨時變量的濫用會導致程序運行效率的降低。何時使用臨時變量可基于以下兩點考慮:
        1、該變量是否至少使用兩次。
        2、該變量的使用是否會顯著提高程序的可讀性。
        如果一條也不滿足,則省略該變量的使用。例如:
        <?php
         $tmp = date ("F d, h:i a"); /* ie January 3, 2:30 pm */
         print $tmp;
        ?>
        就應該改成:
        <?php
         print date ("F d, h:i a");
        ?>

        又如:
        <?php

        // string reverse_characters(string str)
        // Reverse all of the characters in a string.
        function reverse_characters ($str)
        {
         return implode ("", array_reverse (preg_split("//", $str)));
        }

        ?>
        的可讀性不強,可改成:
        <?php

        // string reverse_characters(string str)
        // Reverse all of the characters in a string.
        function reverse_characters ($str)
        {
         $characters = preg_split ("//", $str);
         $characters = array_reverse ($characters);

         return implode ("", $characters);
        }

        ?>

        四、客戶端和服務器端代碼的分離
          客戶端和服務器端代碼的在PHP程序中實際上就是HTML代碼和PHP語言代碼,很多人把HTML和PHP語句混合在一個文件里,使得這文件很大,這種風格對程序的維護和再開發很不利,不適合大型站點的開發。一般有兩種方法把HTML和PHP語句分開:
        1、編寫專用API,例如:

        index.php ? The Client side
        <?php include_once ("site.lib"); ?>
        <html>
        <head>
        <title> <?php print_header (); ?> </title>
        </head>
        <body>
        <h1> <?php print_header (); ?> </h1>
        <table border="0" cellpadding="0" cellspacing="0">
        <tr>
        <td width="25%">
        <?php print_links (); ?>
        </td>
        <td>
        <?php print_body (); ?>
        </td>
        </tr>

        </body>
        </html>


        site.lib ? The server side code


        <?php

        $dbh = mysql_connect ("localhost", "sh", "pass")
        or die (sprintf ("Cannot connect to MySQL [%s]: %s",
        mysql_errno (), mysql_error ()));
        @mysql_select_db ("MainSite")
        or die (sprintf ("Cannot select database [%s]: %s",
        mysql_errno (), mysql_error ()));

        $sth = @mysql_query ("SELECT * FROM site", $dbh)
        or die (sprintf ("Cannot execute query [%s]: %s",
        mysql_errno (), mysql_error ()));

        $site_info = mysql_fetch_object ($sth);

        function print_header ()
        {
         global $site_info;
         print $site_info->header;
        }

        function print_body ()
        {
         global $site_info;
         print nl2br ($site_info->body);
        }

        function print_links ()
        {
         global $site_info;

         $links = explode ("
        ", $site_info->links);
         $names = explode ("
        ", $site_info->link_names);

        for ($i = 0; $i < count ($links); $i++)
        {
         print "
         <a href="$links[$i]">$names[$i]</a>
         


        ";
        }
        }
        ?>

        這種方法使得程序看起來比較簡潔,而且執行速度也較快。

        2、使用模板的方法
        這種方法使得程序看起來更簡潔,同樣實現上面的功能,可用以下代碼:
        <html>
        <head>
        <title>%%PAGE_TITLE%%</title>
        </head>
        <body %%BODY_PROPERTIES%%>
        <h1>%%PAGE_TITLE%%</h1>
        <table border="0" cellpadding="0" cellspacing="0">
        <tr>
        <td width="25%">%%PAGE_LINKS%%</td>
        <td>%%PAGE_CONTENT%%</td>
        </tr>

        </body>
        </html>

          用占位符代替要動態生成的內容,然后用一解析程序分析該模板文件,把占位符用際的內容替換。種方法使得即使不會使用PHP的頁面制作人員也能修改模板文件。這種方法的缺點是執行效率不高,因為要解釋模板文件。同時實現起來也比較復雜。

        注: www.thewebmasters.net的 FastTemplate class可方便的實現以上功能。

        五、不要用過時的函數
        作為一種自由軟件,PHP發展很快,其中的很多函數都已過時,例如:

        while (1):
        print "5";
        if ($idx++ == 5):
        break;
        endif;
        endwhile;

          雖然還能用但效率肯定不高,而且可能在以后的版本中會禁用,導致程序不能運行。因此要經常對照最新PHP手冊檢查那些函數已過時及時修正。 

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 日本一卡精品视频免费| 大妹子影视剧在线观看全集免费| 久久免费视频观看| 国产精品无码亚洲精品2021| 和日本免费不卡在线v| 亚洲人xxx日本人18| 成人免费午间影院在线观看| 国产v亚洲v天堂无码网站| 成在人线av无码免费高潮水| 怡红院亚洲怡红院首页| 西西人体免费视频| 亚洲2022国产成人精品无码区| 国产成人高清亚洲一区久久| 一级成人a毛片免费播放| 国产乱人免费视频| 亚洲三级中文字幕| 在线免费播放一级毛片| 亚洲精品午夜国产VA久久成人| 国产偷国产偷亚洲清高APP| 国产成人免费一区二区三区| 一区二区视频在线免费观看| 天天看片天天爽_免费播放| 亚洲精品国产av成拍色拍| 无码区日韩特区永久免费系列 | 久久久久亚洲AV综合波多野结衣| 久久夜色精品国产噜噜亚洲a| 免费观看男人吊女人视频| 91在线精品亚洲一区二区| 久久久久免费看黄A片APP| 亚洲视频国产精品| 成人免费视频一区| 黄色视频在线免费观看| 亚洲国产精品自在线一区二区| 福利免费观看午夜体检区| 亚洲另类春色国产精品| 日本免费福利视频| 免费播放在线日本感人片| 亚洲人成网男女大片在线播放| 亚洲人成电影网站国产精品| 夜夜爽妓女8888视频免费观看 | 亚洲国产综合91精品麻豆|