<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • php開發文檔怎么寫(php擴展開發參考手冊)


    1. 介紹

    1.1 介紹

    福哥的TFUMS項目的配置文件其實就是一個PHP程序文件,使用PHP程序文件作為項目的配置文件雖然更加靈活,但是感覺上差一點。

    Java項目使用XML作為項目的配置文件,XML格式可以容納更復雜的配置參數,閱讀起來也很清晰,但是PHP讀取XML格式的文檔有點先天不足,XML格式無法轉換為PHP的數組,而且PHP解析XML格式的效率也不高。

    PHP語言解析器的配置文件是INI格式的文件,INI格式不如XML格式可以適應更為復雜的配置參數,但是它也足夠使用了,最關鍵是的PHP解析INI格式非常的方便,一個parse_ini_file函數便可以將INI文檔里面的配置參數轉換為一個PHP的數組,由于是內建函數效率還有保障,就是它了~~

    2. PHP格式配置文件

    福哥先給出現在的TFUMS項目的配置文件,這是一個標準的PHP程序文件,里面通過TFConfig對象設置項目參數。

    2.1 配置文件

    use TFPHPDatabaseSQLTFDO;
    use TFPHPSystemTFLog;
    use TFPHPSystemTFConfig;
    
    TFConfig::set("default", array(
        'driver'=>TFDO::T_MYSQL,
        'host'=>"mysql",
        'port'=>3306,
        'user'=>"tfums",
        'pass'=>"abcdef",
        'db'=>"tfums",
        'charset'=>"utf8",
    ), "TFDO");
    TFConfig::set("default", array(
        'host'=>"redis",
        'port'=>6379,
        'pass'=>"tongfu.net",
        'db'=>"tfums",
    ), "TFRedis");
    TFConfig::set("default", array(
        'host'=>"elasticsearch",
        'port'=>9200,
        'db'=>"tfums"
    ), "TFElasticsearch");
    
    TFConfig::set("charset", "UTF-8", "system");
    TFConfig::set("domain", "192.168.1.168", "system");
    TFConfig::set("apiUrl", "http://php-nginx-tfums/api/", "system");
    TFConfig::set("outUrl", "http://192.168.1.168/tfums/", "system");
    TFConfig::set("baseUri", "/", "system");
    TFConfig::set("systemLogLevel", TFLog::T_INFO, "system");
    TFConfig::set("projectAESPK", md5("福哥的TFUMS系統基于TFPHP框架"), "system");
    
    TFConfig::set("SMTPArgs", array(
        'host'=>"smtp.tongfu.net",
        'port'=>25,
        'user'=>"tfums@tongfu.net",
        'pwd'=>"cba321",
        'email'=>"tfums@tongfu.net"
    ), "system");
    
    TFConfig::set("imageDirArgs", array(
        "dirs"=>array(
            "img3"=>array(
                "path"=>"/tongfu.net/web/TFHomeImg3/",
                "requestUri"=>"/img3/"
            )
        ),
        "default"=>"img3"
    ), "system");
    TFConfig::set("defaultUserImages", array(
        'icon'=>"/images/usericon.jpg",
        'style'=>"/images/userstyle.jpg",
    ), "system");
    
    TFConfig::set("bindEmailTemplateArgs", array(
        'subject'=>"親愛的{userName},請激活你的TFUMS系統賬號的綁定郵箱",
        'body'=>"親愛的{userName},你好!<br/>
    <br/>
    請點擊下面的鏈接完成郵箱綁定操作!<br/><br/>
    <a href="{link}" target="_blank">{link}</a><br/>
    <br/>
    TFUMS<br/>
    tfums@tongfu.net<br/>"
    ), "system");

    2.2 數據源

    這個里面有三個數據源,分別是MySQL數據源、Redis數據源和ES數據源,它是一個數組形式。

    TFConfig::set("default", array(
        'driver'=>TFDO::T_MYSQL,
        'host'=>"mysql",
        'port'=>3306,
        'user'=>"tfums",
        'pass'=>"abcdef",
        'db'=>"tfums",
        'charset'=>"utf8",
    ), "TFDO");
    TFConfig::set("default", array(
        'host'=>"redis",
        'port'=>6379,
        'pass'=>"tongfu.net",
        'db'=>"tfums",
    ), "TFRedis");
    TFConfig::set("default", array(
        'host'=>"elasticsearch",
        'port'=>9200,
        'db'=>"tfums"
    ), "TFElasticsearch");

    2.3 環境參數

    這里是一個系統環境參數,都是一些簡單字符串參數。

    TFConfig::set("charset", "UTF-8", "system");
    TFConfig::set("domain", "192.168.1.168", "system");
    TFConfig::set("apiUrl", "http://php-nginx-tfums/api/", "system");
    TFConfig::set("outUrl", "http://192.168.1.168/tfums/", "system");
    TFConfig::set("baseUri", "/", "system");
    TFConfig::set("systemLogLevel", TFLog::T_INFO, "system");
    TFConfig::set("projectAESPK", md5("福哥的TFUMS系統基于TFPHP框架"), "system");

    2.4 功能參數

    功能參數針對的一些系統功能的參數,一般情況下都是數組類型的參數,甚至還會有多級參數。

    TFConfig::set("SMTPArgs", array(
        'host'=>"smtp.tongfu.net",
        'port'=>25,
        'user'=>"tfums@tongfu.net",
        'pwd'=>"cba321",
        'email'=>"tfums@tongfu.net"
    ), "system");
    
    TFConfig::set("imageDirArgs", array(
        "dirs"=>array(
            "img3"=>array(
                "path"=>"/tongfu.net/web/TFHomeImg3/",
                "requestUri"=>"/img3/"
            )
        ),
        "default"=>"img3"
    ), "system");
    TFConfig::set("defaultUserImages", array(
        'icon'=>"/images/usericon.jpg",
        'style'=>"/images/userstyle.jpg",
    ), "system");
    
    TFConfig::set("bindEmailTemplateArgs", array(
        'subject'=>"親愛的{userName},請激活你的TFUMS系統賬號的綁定郵箱",
        'body'=>"親愛的{userName},你好!<br/>
    <br/>
    請點擊下面的鏈接完成郵箱綁定操作!<br/><br/>
    <a href="{link}" target="_blank">{link}</a><br/>
    <br/>
    TFUMS<br/>
    tfums@tongfu.net<br/>"
    ), "system");

    3. INI格式配置文件

    INI格式雖然也可以通過section和key、value實現一個二維數組的結構,但是INI格式畢竟沒有PHP語言那樣的自由。所以福哥要將TFUMS項目的配置文件轉換為INI格式需要一些技巧。

    3.1 配置文件

    [TFDO]
    
    default[driver] = MySQL
    default[host] = mysql
    default[port] = 3306
    default[user] = root
    default[pass] = abcdef
    default[db] = tfums
    default[charset] = utf8
    
    [TFRedis]
    
    default[host] = redis
    default[port] = 6379
    default[pass] = tongfu.net
    default[db] = tfums
    
    [TFElasticsearch]
    
    default[host] = elasticsearch
    default[port] = 9200
    default[db] = tfums
    
    [system]
    
    charset = UTF-8
    domain = 192.168.1.168
    apiUrl = http://php-nginx-tfums/api/
    outUrl = http://192.168.1.168/tfums/
    baseUri = /
    systemLogLevel = info
    projectAESPK = 86fbd7cec5a89700760c167e85acdab8
    imageDirsPath[img3] = /tongfu.net/web/TFHomeImg3/
    imageDirsRequestURI[img3] = /img3/
    imageDirDefault = img3
    
    SMTP[host] = smtp.tongfu.net
    SMTP[port] = 25
    SMTP[user] = tfums@tongfu.net
    SMTP[pwd] = cba321
    SMTP[email] = tfums@tongfu.net
    
    defaultUserImages[icon] = /images/usericon.jpg
    defaultUserImages[style] = /images/userstyle.jpg
    
    bindEmailTemplate[subject] = 親愛的{userName},請激活你的TFUMS系統賬號的綁定郵箱
    bindEmailTemplate[body] = "親愛的{userName},你好!<br/>
    <br/>
    請點擊下面的鏈接完成郵箱綁定操作!<br/><br/>
    <a href="{link}" target="_blank">{link}</a><br/>
    <br/>
    tfums<br/>
    tfums@tongfu.net<br/>"

    3.2 數據源

    INI文檔可以通過section和key實現一個二維數組結構,這個和PHP的group+數組格式相符合,沒有問題!

    INI文檔的key也可以用方括號設置數組格式,parse_ini_file函數會把它轉換成一個數組參數。

    [TFDO]
    
    default[driver] = MySQL
    default[host] = mysql
    default[port] = 3306
    default[user] = root
    default[pass] = abcdef
    default[db] = tfums
    default[charset] = utf8
    
    [TFRedis]
    
    default[host] = redis
    default[port] = 6379
    default[pass] = tongfu.net
    default[db] = tfums
    
    [TFElasticsearch]
    
    default[host] = elasticsearch
    default[port] = 9200
    default[db] = tfums

    3.3 環境參數

    環境參數大多數參數都是一個字符串,可以直接設置。還有imageDirArgs是一個多為數組,這個INI格式搞不定了。

    福哥的解決方法是將多維數組拆開為多個參數,當然相應的項目里的程序也要做改動才行。

    charset = UTF-8
    domain = 192.168.1.168
    apiUrl = http://php-nginx-tfums/api/
    outUrl = http://192.168.1.168/tfums/
    baseUri = /
    systemLogLevel = info
    projectAESPK = 86fbd7cec5a89700760c167e85acdab8
    imageDirArgsPath[img3] = /tongfu.net/web/TFHomeImg3/
    imageDirArgsRequestURI[img3] = /img3/
    imageDirArgsDefault = img3

    3.4 功能參數

    功能參數都是一個一個的數組,這個也可以直接轉換過來。

    這里面有一個特殊的情況,就是郵件模板的正文的一個多行字符串,這個需要用雙引號括起來才行,而且內容里面的雙引號需要轉義一下。

    SMTP[host] = smtp.tongfu.net
    SMTP[port] = 25
    SMTP[user] = tfums@tongfu.net
    SMTP[pwd] = cba321
    SMTP[email] = tfums@tongfu.net
    
    defaultUserImages[icon] = /images/usericon.jpg
    defaultUserImages[style] = /images/userstyle.jpg
    
    bindEmailTemplate[subject] = 親愛的{userName},請激活你的TFUMS系統賬號的綁定郵箱
    bindEmailTemplate[body] = "親愛的{userName},你好!<br/>
    <br/>
    請點擊下面的鏈接完成郵箱綁定操作!<br/><br/>
    <a href="{link}" target="_blank">{link}</a><br/>
    <br/>
    tfums<br/>
    tfums@tongfu.net<br/>"

    3.5 INI轉PHP數組

    這個比較簡單,就是一行代碼的事情。

    $webIniArr = parse_ini_file(WEB_INF_ROOT_PATH. 'Conf/web.ini', true);

    轉換后的PHP數組是這樣的結構。

    PHP使用ini格式的文檔當作項目配置文件
    PHP使用ini格式的文檔當作項目配置文件

    4. 總結

    今天福哥帶著童鞋們將TFUMS項目的配置文件從一個PHP格式的程序文件改造成了INI格式的文檔,使用INI文檔后的配置文件看起來更加像一個配置文件了,INI文檔更加獨立,可讀性更好。

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费