麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > PHP > 正文

構建可配置PHP應用程序的正確方式

2024-05-04 21:47:17
字體:
來源:轉載
供稿:網友

本文舉例說明了創建可配置 PHP 應用程序的幾種方法。文中也探討了應用程序中理想的配置點,并在應用程序過分可配置和過分封閉之間尋求一個平衡點。

假如計劃讓其他人或公司可以使用您的 PHP 應用程序,需要確保該程序是可配置的。至少,要答應用戶以一種安全的方式設置數據庫登錄及密碼,從而使其中的材料不會對外公開。

本文展示了幾種用于存儲配置設置及編輯這些設置的技術。另外,文中也為哪些元素需要設為可配置以及如何避免陷入配置過度或者配置不足的困境提供了指導。

使用 INI 文件進行配置

PHP 內建了對配置文件的支持。這是通過 php.ini 文件這樣的初始化文件(INI)機制實現的,在 php.ini 文件中定義了數據庫連接超時或會話如何存儲等常量。假如愿意的話,可以在這個 php.ini 文件中為應用程序定制配置。為了說明,我將下列代碼行添加到 php.ini 文件中。

myapptempdir=foo

然后,我編寫了一個小 PHP 腳本來讀取這個配置項,如清單 1 所示。

清單 1. ini1.php

  1. <?php 
  2. function get_template_directory() 
  3.  $v = get_cfg_var( "myapptempdir" ); 
  4.  return ( $v == null ) ? "tempdir" : $v
  5.  
  6. echo( get_template_directory()."n" ); 
  7. ?> 

當在命令行中運行這段代碼時,得到如下結果:

  1. % php ini1.php 
  2. foo 

太棒了。但為什么不能用標準的 INI 函數來獲取 myapptempdir 配置項的值呢?我研究了一下,發現在大多數情況下,定制配置項不能使用這些方法來獲取。然而,使用 get_cfg_var 函數卻是可以訪問的。

為使這個方法更加簡單,將對變量的訪問封裝在第二個函數中,該函數使用配置鍵名及一個缺省值作為參數,如下所示。

清單 2. ini2.php

  1. function get_ini_value( $n$dv ) 
  2.  $c = get_cfg_var( $n ); 
  3.  return ( $c == null ) ? $dv : $c
  4.  
  5. function get_template_directory() 
  6.  return get_ini_value( "myapptempdir""tempdir" ); 

這是對如何訪問 INI 文件的一個很好的概括,所以,假如要使用一個不同的機制或將這個 INI 文件存儲到其他位置,就不需要為更改大量的函數而大費周折。

我不推薦使用 INI 文件作為應用程序的配置,這有兩個理由。首先,雖然這樣做較輕易讀取 INI 文件,但卻幾乎不可能安全地寫 INI 文件。所以這樣做只適合于只讀配置項。第二,php.ini 文件在服務器的所有應用程序上共享,所以我認為特定于應用程序的配置項不應該寫在該文件中。

需要對 INI 文件了解什么呢?最重要的是如何重置 include 路徑來添加配置項,如下所示。

清單 3. ini3.php

  1. <?php 
  2. echoini_get("include_path")."n" ); 
  3. ini_set("include_path"
  4. ini_get("include_path").":./mylib" ); 
  5. echoini_get("include_path")."n" ); 
  6. ?> 

在本例中,我將我的本地 mylib 目錄添加到了 include 路徑中,所以能夠從該目錄中 require PHP 文件,而不需要將該路徑添加到 require 語句中。

PHP 中的配置

通常對于在 INI 文件中存儲配置條目的一個替代辦法是使用一個簡單的 PHP 腳本來保持數據。如下是一個樣例。

清單 4. config.php

  1. <?php 
  2. # Specify the location of the temporary directory 
  3. $TEMPLATE_DIRECTORY = "tempdir"
  4. ?> 

使用該常量的代碼如上所示。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产一区二区在线免费观看 | 欧美一a一片一级一片 | 久久国产精品久久久久久久久久 | 91成人免费在线视频 | 羞羞答答tv | 亚洲午夜视频在线 | 久久久婷婷一区二区三区不卡 | 91精选视频 | 久国产精品视频 | 亚洲精品久久久久久 | 黄色网电影 | 国产精品久久久久久久久久免 | 中文字幕免费播放 | 中午日产幕无线码1区 | 久久免费视频一区 | 一级黄色淫片 | 中文字幕欧美专区 | 高清av在线 | 草久视频在线观看 | 永久免费在线观看av | 国产精品av久久久久久久久久 | 欧美xxxxx视频 | 久久久久久久久久久久久久av | 精品xxxx户外露出视频 | 午夜视频你懂的 | av成人免费在线观看 | 中国av免费在线观看 | 主人在调教室性调教女仆游戏 | 国产成人av一区二区 | 成人午夜在线免费观看 | 一日本道久久久精品国产 | 日韩欧美中文字幕视频 | 黄污视频在线看 | 亚洲最大中文字幕 | 亚洲成人自拍电影 | 精品人人人人 | 亚洲天堂一级片 | a级高清免费毛片av在线 | 日本xxxx色视频在线观看免费, | 色婷婷a v | 免费一级特黄欧美大片勹久久网 |