什麼是PHP配置模式?

PHP Configuration Patterns

PHP配置模式

概觀: PHP是一種跨平台的語言. 它是一個基於服務器的應用程序,所以我們必須思考的PHP軟件的配置設置. 有創建配置PHP應用程序的各種方式. 配置靈活性是一個內置的功能在PHP. 但是,我們必須提出申請之前配置了解清楚的要求.

本文將討論不同的PHP配置模式及其實施.

介紹:

有幾種方法可以使PHP應用程序配置. 也有理想的配置點,這是行業標準. 這些要點將決定一個PHP應用程序是否過配置或太封閉. 如果PHP應用程序對某些客戶端安裝那麼它應該是足夠的配置以滿足定制要求. 有存儲配置設置中提供不同的技術和選項的下面提到.

  1. INI文件
  2. PHP文件
  3. 文字檔
  4. XML文件
  5. 數據庫

每一個選擇都有它的優點和缺點. 現在,所有這些選擇都將被發現以觀察哪種技術是準確的運行的應用程序.

ini文件模式: PHP已經內置了對配置文件的支持. 該任務是在初始化執行 (此) 這被稱為php.ini文件文件夾機構. 該文件定義的常量, 數據庫連接參數, 會話相關的值等. 但是,自定義配置參數也可以包含在php.ini文件中按您的應用需求. 讓我們檢查一個簡單的例子.

讓我添加一個簡單的行 php.ini中 文件.

myappworkdir = phpbuilder

清單1: 在php.ini文件sample.php顯示的條目

<?PHP

功能get_work_directory()

{

$V = get_cfg_var( “myappworkdir ” );

return ( $v == NULL ) ? “WORKDIR” : $v;

}

迴聲( get_work_directory().”\Ň” );

?>

現在讓我在命令提示符下運行此. 它將顯示值,如下所示.

% PHP sample.php

phpbuilder

%

我們必須記住,不建議為你的應用程序配置條目INI文件. 主要的原因在於,INI文件可以容易地讀出,但寫入它以安全的方式,幾乎是不可能. 因此,作為一個後果, INI文件適用於只讀操作. 如果應用程序需要讀取和寫入操作, 那麼INI文件作為配置模式必須避免. 第二個原因是,php.ini文件在服務器上運行的所有應用程序之間共享, 這樣,應用程序特定項不推薦.

PHP腳本文件 模式: PHP腳本也可用於存儲配置項. 這還不算什麼,但持有的配置參數的PHP文件. 第一步是創建一個PHP文件,然後添加常數根據應用需求. 這些常數可以直接從其他文件進行訪問.

下面的示例顯示了保持常數和第二個PHP文件訪問值的一個腳本文件.

Listing 2: 樣品展示配置條目 (configscript.php)

<?PHP

# 工作目錄位置

#

$WORK_DIRECTORY = “WORKDIR”;

?>

Listing 3: .樣本顯示訪問配置值 (test.php的)

<?PHP

require_once ‘configscript.php’;

功能get_work_directory()

{

全球$ WORK_DIRECTORY;

返回$ WORK_DIRECTORY;

}

迴聲( get_work_directory().”\Ň” );

?>

現在,讓我們討論這種設計模式的優勢. First, 該文件是新創建的所以它只是一個空白文件,您可以添加參數. 你也可以把PHP腳本文件相同的文件作為根. 第二個優點是,該文件可以通過使用任何標準編輯器進行編輯.

隨著的優點也有一些缺點還. 這種模式也像前一節中所討論的INI文件的只讀圖案. 這樣的讀出操作是很容易的,但寫幾乎是難以執行.

文本文件模式: 我們之前的兩種模式分別適用於只讀操作. 但是,如果應用程序需要讀取和寫入的配置項那麼我們應該尋找其他的選擇. 在這裡,我將討論有關文本配置模式.

讓我們看一個例子實現文本文件模式.

以下是其配置條目的第一個文本文件. 這是一個簡單 (文本) 其配置項文件.

Listing 4: 樣本顯示文本文件條目 (的config.txt)

# 應用程序的文本配置文件

標題=我的應用程序在phpbuilder

WorkDirectory = WORKDIR

接下來的部分是一個自定義的配置類訪問文本配置文件條目.

Listing 5: 配置值的樣品顯示檢索 (test.php的)

<?PHP

類TextConfiguration

{

private $configFileText = ‘config.txt’;

私人$ itemslist =陣列();

功能__construct() { $這個->parseFile(); }

功能__get($ID) { 返回$這個 - >itemslist[ $ID ]; }

功能parseFile()

{

$FL = FOPEN( $這個->configFileText, 'R’ );

while( $L =與fgets( $FL ) )

{

如果 ( 的preg_match( '/ ^#/', $升 ) ==假 )

{

的preg_match( '/ ^(.*?)=(.*?)$/’, $升, $發現 );

$這個->itemslist[ $發現[1] ] = $發現[2];

}

}

FCLOSE( $FL );

}

}

$T =新TextConfiguration();

迴聲( $T->WorkDirectory。”\Ň” );

?>

在這個類中,我們創建一個配置類對象. 在此之後,構造讀取文本的配置文件的內容,然後局部變量填充了被分析的數據. 在下一步驟的腳本查詢的 “WorkDirectory’ 最後它顯示值.

如果PHP文件在命令提示符下運行,那麼以下結果將顯示.

% PHP test.php的

WORKDIR

%

在類似的方式寫入動作也可以在相同的文字的配置文件上執行. 我們需要添加自定義配置類的一些更多的方法來將數據保存在文本文件中. 雖然編碼部分是多一點在這種方法中,但它同時支持的讀取和寫入操作.

XML文件 模式: 在上一節中,我討論與讀寫operations.XML文件支持的文本文件,圖形可以作為PHP配置模式的另一種選擇. XML文件也被廣泛地用作在各種應用中的配置文件,以便它是一種工業標準. In addition to this, XML文件是基於標籤的,有很多標準的編輯器可用於編輯XML文件.

讓我們先檢查其中包含的參數值的配置文件.

Listing6: 樣本顯示XML配置文件 (config.xml中)

<?xml version=”1.0″?>

<config>

<標題>我在phpbuilder應用</標題>

<WorkDirectory>WORKDIR</WorkDirectory>

</config>

以下是從XML配置文件中訪問數據更新的配置類.

Listing7: xml配置文件樣本顯示用法 (testxml.php)

<?PHP

類XMLConfiguration中

{

private $configFileXML = ‘config.xml’;

私人$ itemslist =陣列();

功能__construct() { $這個->解析(); }

功能__get($ID) { 返回$這個 - >itemslist[ $ID ]; }

功能parseXML()

{

$DOC =新的DOMDocument();

$doc->加載( $這個->configFileXML );

$CN = $ doc->的getElementsByTagName( “config” );

$節點= $ CN->項目(0)->的getElementsByTagName( “*” );

的foreach( $節點作為$節點 )

$這個->itemslist[ $節點->節點名稱 ] = $於節點>的nodeValue;

}

}

$C =新XMLConfiguration中();

迴聲( $C->WorkDirectory。”\Ň” );

?>

xml配置模式是更清潔,更容易實現. 如果上面的代碼在命令提示符下運行,那麼它會顯示與上面相同的輸出. 上面的示例僅顯示了讀操作. 寫入動作也可以通過加入一些更多的方法進行.

數據庫 模式: 現在,我們將討論這是基於數據庫的最後PHP配置模式. 該數據庫將保存配置值. 和自定義類已被如上設計成訪問數據庫模式和檢索值.

基於數據庫的配置模式基本上是一種混合模式. 它是文本和數據庫圖案的混合物. 配置類被設計為從文本文件中讀取的初始值,然後訪問數據庫更新相關的條目. 但是,這種方法具有足夠的靈活性在各種應用中使用.

結論: 在這篇文章中,我們已經觸及的PHP配置模式各個方面. 我們也明白,一個PHP應用程序的配置部分必須在設計階段考慮. PHP應用程序可以是根據功能的各種類型的, 因此一個特定的配置圖案的選擇是成功的關鍵因素. 我希望你理解的PHP配置模式在實際應用中的基本概念及其實施.

標籤:
============================================= ============================================== 在亞馬遜上購買最佳技術書籍,en,電工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share