FleaPHP的命名規(guī)則和目錄結(jié)構(gòu)初看上去比較復(fù)雜,但習(xí)慣以后,你會(huì)發(fā)現(xiàn)這種命名規(guī)則帶來(lái)許多好處。因此像ZendFramework也是" />

黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

FleaPHP 開(kāi)發(fā)指南 - 4. 命名規(guī)范和目錄結(jié)構(gòu)

系統(tǒng) 3422 0
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

FleaPHP 的命名規(guī)則和目錄結(jié)構(gòu)初看上去比較復(fù)雜,但習(xí)慣以后,你會(huì)發(fā)現(xiàn)這種命名規(guī)則帶來(lái)許多好處。因此像 Zend Framework 也是采用同樣的做法。

當(dāng)然,F(xiàn)leaPHP 對(duì)于應(yīng)用程序的命名規(guī)則和目錄結(jié)構(gòu)沒(méi)有強(qiáng)制性要求。只不過(guò)采用一致的命名規(guī)則和目錄結(jié)構(gòu),可以方便對(duì)應(yīng)用程序維護(hù)。同時(shí) FleaPHP 應(yīng)用程序開(kāi)發(fā)者之間也可以更容易的進(jìn)行協(xié)作。


全局函數(shù)的命名規(guī)則

全局函數(shù)的命名規(guī)則是用“_”分隔全小寫(xiě)的單詞。例如 get_cache()、echo_h()。同時(shí),函數(shù)的名字采用“動(dòng)詞+賓語(yǔ)”的形式。例如 write(動(dòng)詞)_cache(賓語(yǔ))。

不過(guò)有些全局函數(shù)為了和 PHP 中已有的類(lèi)似函數(shù)保持一致,采用了不同的命名方式(順便抱怨一下,PHP 自身的全局函數(shù)命名比較混亂,各種形式的都有)。


類(lèi)的命名規(guī)則

所有 FleaPHP 自帶的類(lèi),都以 FLEA_ 開(kāi)頭。然后根據(jù)用途命名。例如 FLEA_Controller_Action、FLEA_Helper_ImgCode。 然后將類(lèi)名字中的“_”替換為目錄分隔符,就是這個(gè)類(lèi)的定義文件所在位置。

舉例:

FLEA_Controller_Action 類(lèi),保存文件為 FLEA/Controller/Action.php
FLEA_Db_TableDataGateway 類(lèi),保存文件為 FLEA/Db/TableDataGateway.php

這種命名規(guī)則和目錄結(jié)構(gòu)的優(yōu)缺點(diǎn)如下:

優(yōu)點(diǎn):

  • 避免命名沖突
  • 根據(jù)類(lèi)名字就能找到文件存放位置
  • 應(yīng)用程序中可以使用 FleaPHP 的 import()、load_class() 函數(shù)方便的載入類(lèi)定義文件
  • 如果使用 PHP5,可以很方便的用 __autoload() 來(lái)自動(dòng)載入需要的類(lèi)定義:
      
        
          <?php </span>
          
            function
          
           __autoload(
          
            $className
          
          ) { load_class(
          
            $className
          
          );}
          
            ?>
          
        
      
    

缺點(diǎn):

  • 類(lèi)名字較長(zhǎng),不便于輸入,例如 FLEA_Com_RBAC_UsersManager
  • 也許和現(xiàn)有習(xí)慣不同,需要時(shí)間來(lái)適應(yīng)

對(duì)于第一個(gè)缺點(diǎn),使用 Zend Development Environment 或者 Eclipse 這樣的 IDE 可以緩解。這些 IDE 提供強(qiáng)大的輸入自動(dòng)完成功能,通常輸入類(lèi)名字的開(kāi)頭幾個(gè)字母,就會(huì)顯示候選列表讓開(kāi)發(fā)者選擇。


變量和常量命名

在 FleaPHP 中,變量分為全局變量、臨時(shí)變量和模版變量三類(lèi)。

  • 全局變量和常量

    全局變量和常量都使用全大寫(xiě),以“_”分隔。例如 $GLOBALS['CLASS_PATH'] FLEA_DIR 。不過(guò) FleaPHP 中盡量避免了使用全局變量和常量,因此一般來(lái)說(shuō)不會(huì)和應(yīng)用程序產(chǎn)生沖突。

  • 臨時(shí)變量

    函數(shù)、類(lèi)方法中使用的變量都是臨時(shí)變量,命名規(guī)則是第一個(gè)單詞小寫(xiě),后續(xù)的單詞第一個(gè)字母大寫(xiě)。例如 $requestFilters $dispatcherClass 等。

  • 模版變量

    之所以要把模版變量單獨(dú)列出來(lái),是因?yàn)椴煌哪0嬉鎸?duì)變量名有不同的規(guī)范。從我個(gè)人來(lái)說(shuō),我傾向于模版變量使用全小寫(xiě)單詞,并以“_”分隔,例如 $latest_products_list 。這樣在程序里面一眼就能看出哪些變量是用于模版的。


FleaPHP 的目錄結(jié)構(gòu)

一個(gè)典型的 FleaPHP 應(yīng)用程序具有如下的目錄結(jié)構(gòu):

這個(gè)應(yīng)用程序的目錄主要分為 WebLibs 和 WebRoot。其中 WebLibs 保存程序的所有代碼,而 WebRoot 目錄下只保存用戶(hù)可以訪(fǎng)問(wèn)的部分,例如 index.php 入口文件、圖片、CSS 樣式表和 JS 腳本。

WebLibs 下又分為 FLEA 和 YORK 兩個(gè)目錄。FLEA 目錄保存 FleaPHP 的核心文件,而 YORK 目錄保存應(yīng)用程序的代碼。之所以取名 YORK,是因?yàn)檫@個(gè)項(xiàng)目的公司名為 YORK。所以開(kāi)發(fā)者在規(guī)劃目錄結(jié)構(gòu)時(shí),可以參照這種方式,為保存應(yīng)用程序代碼的目錄取一個(gè)容易理解的名字。

WebRoot 是保存用戶(hù)使用瀏覽器可以直接訪(fǎng)問(wèn)的內(nèi)容,因此需要修改服務(wù)器或虛擬主機(jī)設(shè)置,將網(wǎng)站的根目錄指向 WebRoot 目錄。例如 www.example.com 指向 /example/WebRoot/。

這里介紹的目錄結(jié)構(gòu)有如下優(yōu)點(diǎn):

優(yōu)點(diǎn):

  • 代碼文件放置在瀏覽器訪(fǎng)問(wèn)不到的地方,提高了安全性
  • 程序員和設(shè)計(jì)人員可以在不同的目錄工作,降低了發(fā)生沖突的幾率
  • 目錄結(jié)構(gòu)更清晰,容易理解

而主要的缺點(diǎn)就是需要修改服務(wù)器設(shè)置,將網(wǎng)站根目錄指向 WebRoot 目錄。而有些虛擬主機(jī)不允許這樣做,或者需要聯(lián)系服務(wù)器管理員,比較麻煩。

對(duì)于這種目錄結(jié)構(gòu),放置在 WebRoot 中的 index.php 入口文件應(yīng)該明確調(diào)用 import() 將 WebLibs 目錄添加到類(lèi)定義搜索路徑中。否則 load_class() 會(huì)找不到需要的文件。

      
        
          <?php </span>
          
            require
          
          (
          
            '../WebLibs/FLEA/FLEA.php'
          
          );import(
          
            '../WebLibs/YORK/'
          
          );....run();
          
            ?>
          
        
      
    

對(duì)于虛擬主機(jī)用戶(hù),可以將 WebLibs 目錄移動(dòng)到 WebRoot 目錄中。形成如下的目錄結(jié)構(gòu):

上圖中,所有文件都保存在應(yīng)用程序的根目錄 cdhlss 中,而代碼文件保存在 libs 子目錄中。其中 libs/APP 保存應(yīng)用程序的代碼。

相應(yīng)的 index.php 需要修改為:

      
        
          <?php </span>
          
            require
          
          (
          
            'libs/FLEA/FLEA.php'
          
          );import(
          
            'libs/APP/'
          
          );....run();
          
            ?>
          
        
      
    

在實(shí)際開(kāi)發(fā)中,由于 FleaPHP 并沒(méi)有強(qiáng)制要求命名規(guī)范和目錄結(jié)構(gòu)。所以開(kāi)發(fā)者可以繼續(xù)沿用自己熟悉的方式來(lái)開(kāi)發(fā)應(yīng)用程序。

<!-- generated by Texy! -->


FleaPHP 開(kāi)發(fā)指南 - 4. 命名規(guī)范和目錄結(jié)構(gòu)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論