<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 開發規范 #### 目錄和文件 * 目錄使用小寫+下劃線; * 類文件采用大駝峰法命名,其它文件采用小寫+下劃線命名; * 類名和類文件名保持一致,統一采用大駝峰法命名; #### 函數和類、屬性命名 * 類的命名采用駝大峰法 , 例如 UserType * 函數的命名使用小寫字母和下劃線的方式,例如 get_client_ip * 方法的命名使用小駝峰法 , 例如 getUserName * 屬性的命名使用駝峰法 , tableName #### 常量和配置 * 常量以大寫字母和下劃線命名,例如 APP_PATH; * 配置參數以小寫字母和下劃線命名,例如 url_route_on #### 數據表和字段 * 數據表和字段采用小寫加下劃線方式命名,并注意字段名不要以下劃線開頭,例如 tp_user 表和 user_name字段 * * * * * ## 高質量實用技巧 #### 1.不要使用相對路徑 常常會看到: ~~~ require_once('../../lib/some_class.php'); ~~~ 該方法有很多缺點: 它首先查找指定的php包含路徑, 然后查找當前目錄。因此會檢查過多路徑。如果該腳本被另一目錄的腳本包含, 它的基本目錄變成了另一腳本所在的目錄. 推薦寫法: ~~~ define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME)); require_once(ROOT . '../../lib/some_class.php'); ~~~ #### 2. 不要直接使用 require, include, include_once, required_once 可以在腳本頭部引入多個文件, 像類庫, 工具文件和助手函數等, 如: ~~~ require_once('lib/Database.php'); require_once('lib/Mail.php'); require_once('helpers/utitlity_functions.php'); ~~~ 推薦寫法: ~~~ function load_class($class_name) { $path = ROOT . '/lib/' . $class_name . '.php'); if(file_exists($path)) { require_once( $path ); } } ~~~ #### 3. 靈活編寫函數 ~~~ function add_to_cart($item_id , $qty) { $_SESSION['cart']['item_id'] = $qty; } add_to_cart( 'IPHONE3' , 2 ); ~~~ 使用上面的函數添加單個項目. 而當添加項列表的時候,只要稍加留意不同類型的參數, 就會更靈活. 如: 推薦寫法: ~~~ function add_to_cart($item_id , $qty) { if(!is_array($item_id)) { $_SESSION['cart']['item_id'] = $qty; } else { foreach($item_id as $i_id => $qty) { $_SESSION['cart']['i_id'] = $qty; } } } add_to_cart( 'IPHONE3' , 2 ); add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) ); ~~~ #### 4. 寫文件前, 檢查目錄寫權限 ~~~ $contents = "All the content"; $file_path = "/var/www/project/content.txt"; file_put_contents($file_path , $contents); ~~~ 這大體上正確. 但有些間接的問題. file_put_contents 可能會由于幾個原因失敗: 1. 父目錄不存在 2. 目錄存在, 但不可寫 3. 文件被寫鎖住? 所以寫文件前做明確的檢查更好. 推薦寫法: ~~~ $contents = "All the content"; $dir = '/var/www/project'; $file_path = $dir . "/content.txt"; if(is_writable($dir)) { file_put_contents($file_path , $contents); } else { die("Directory $dir is not writable, or does not exist. Please check"); } ~~~ #### 5. 更改應用創建的文件權限 在linux環境中, 權限問題可能會浪費你很多時間. 從今往后, 無論何時, 當你創建一些文件后, 確保使用chmod設置正確權限 推薦寫法: ~~~ chmod("/somedir/somefile", 0755); ~~~ #### 6. 將工具函數封裝到類中 假如你在某文件中定義了很多工具函數: ~~~ function utility_a() { //This function does a utility thing like string processing } function utility_b() { //This function does nother utility thing like database processing } function utility_c() { //This function is ... } ~~~ 這些函數的使用分散到應用各處. 你可能想將他們封裝到某個類中: 推薦寫法: ~~~ class Utility { public static function utility_a() { } public static function utility_b() { } public static function utility_c() { } } //and call them as $a = Utility::utility_a(); $b = Utility::utility_b(); ~~~ 顯而易見的好處是, 如果php內建有同名的函數, 這樣可以避免沖突. 另一種看法是, 你可以在同個應用中為同個類維護多個版本, 而不導致沖突. 這是封裝的基本好處, 無它. #### 7.一些建議 ~~~ 1. 使用echo取代print 2. 使用str_replace取代preg_replace, 除非你絕對需要 3. 不要使用 short tag 4. 簡單字符串用單引號取代雙引號 5. head重定向后記得使用exit 6. 不要在循環中調用函數 7. isset比strlen快 8. 始中如一的格式化代碼 9. 不要刪除循環或者if-else的括號 10. 不要嘗試省略一些語法來縮短代碼. 而是讓你的邏輯簡短. ~~~ #### 8. 使用array_map快速處理數組 比如說你想 trim 數組中的所有元素. 新手可能會: ~~~ foreach($arr as $c => $v) { $arr[$c] = trim($v); } ~~~ 但使用 array_map 更簡單: 推薦寫法: ~~~ $arr = array_map('trim' , $arr); ~~~ 這會為$arr數組的每個元素都申請調用trim. 另一個類似的函數是 array_walk. 請查閱文檔學習更多技巧. #### 9. 小心處理大數組 對于大的數組和字符串, 必須小心處理. 常見錯誤是發生數組拷貝導致內存溢出,拋出Fatal Error of Memory size 信息: 當導入或導出csv文件時, 常常會這么做。 推薦寫法: 確保通過引用傳遞, 或存儲在類變量中: ~~~ $a = get_large_array(); pass_to_function(&$a); ~~~ 這么做后, 向函數傳遞變量引用(而不是拷貝數組). 查看文檔. ~~~ class A { function first() { $this->a = get_large_array(); $this->pass_to_function(); } function pass_to_function() { //process $this->a } } ~~~ 盡快的 unset 它們, 讓內存得以釋放,減輕腳本負擔.
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看