构建可配置PHP应用程序的正确方式
本文举例说明了创建可配置 PHP 应用程序的几种方法。文中也探讨了应用程序中理想的配置点,并在应用程序过分可配置和过分封闭之间寻求一个平衡点。
假如计划让其他人或公司可以使用您的 PHP 应用程序,需要确保该程序是可配置的。至少,要答应用户以一种安全的方式设置数据库登录及密码,从而使其中的材料不会对外公开。
本文展示了几种用于存储配置设置及编辑这些设置的技术。另外,文中也为哪些元素需要设为可配置以及如何避免陷入配置过度或者配置不足的困境提供了指导。
使用 INI 文件进行配置
PHP 内建了对配置文件的支持。这是通过 php.ini 文件这样的初始化文件(INI)机制实现的,在 php.ini 文件中定义了数据库连接超时或会话如何存储等常量。假如愿意的话,可以在这个 php.ini 文件中为应用程序定制配置。为了说明,我将下列代码行添加到 php.ini 文件中。
myapptempdir=foo
然后,我编写了一个小 PHP 脚本来读取这个配置项,如清单 1 所示。
清单 1. ini1.php
<?php function get_template_directory() { $v = get_cfg_var("myapptempdir"); return($v == null) ? "tempdir" : $v; } echo (get_template_directory() . "\n"); ?>
当在命令行中运行这段代码时,得到如下结果:
% php ini1.php foo %
太棒了。但为什么不能用标准的 INI 函数来获取 myapptempdir 配置项的值呢?我研究了一下,发现在大多数情况下,定制配置项不能使用这些方法来获取。然而,使用 get_cfg_var 函数却是可以访问的。
为使这个方法更加简单,将对变量的访问封装在第二个函数中,该函数使用配置键名及一个缺省值作为参数,如下所示。
清单 2. ini2.php
<?php function get_ini_value($n, $dv) { $c = get_cfg_var($n); return($c == null) ? $dv : $c; } function get_template_directory() { returnget_ini_value("myapptempdir", "tempdir"); } ?>
这是对如何访问 INI 文件的一个很好的概括,所以,假如要使用一个不同的机制或将这个 INI 文件存储到其他位置,就不需要为更改大量的函数而大费周折。
我不推荐使用 INI 文件作为应用程序的配置,这有两个理由。首先,虽然这样做较轻易读取 INI 文件,但却几乎不可能安全地写 INI 文件。所以这样做只适合于只读配置项。第二,php.ini 文件在服务器的所有应用程序上共享,所以我认为特定于应用程序的配置项不应该写在该文件中。
需要对 INI 文件了解什么呢?最重要的是如何重置 include 路径来添加配置项,如下所示。
清单 3. ini3.php
<?php echo (ini_get("include_path") . "n"); ini_set("include_path", ini_get("include_path") . ":./mylib"); echo (ini_get("include_path") . "n"); ?>
在本例中,我将我的本地 mylib 目录添加到了 include 路径中,所以能够从该目录中 require PHP 文件,而不需要将该路径添加到 require 语句中。
PHP 中的配置
通常对于在 INI 文件中存储配置条目的一个替代办法是使用一个简单的 PHP 脚本来保持数据。如下是一个样例。
清单 4. config.php
<?php // Specify the location of the temporary directory // $TEMPLATE_DIRECTORY = "tempdir"; ?>
使用该常量的代码如上所示。
文章网址:
随意转载^^但请附上教程地址。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如果您在Windows11中使用照片應用程式進行影像編輯時遇到無法儲存變更的錯誤,本文將為您提供解決方案。無法儲存變更。保存時發生錯誤。請稍後再試。通常會出現這種問題的原因包括權限設定不正確、檔案損壞或系統故障。因此,我們經過深入研究,整理出一些最有效的故障排除步驟,以幫助您解決此問題,並確保您可以繼續在Windows11裝置上無縫使用MicrosoftPhotos應用程式。修復Windows11中無法保存更改照片應用程式的錯誤許多用戶在不同的論壇上一直在談論MicrosoftPhotos應用程式錯

AppleVisionPro頭戴式裝置本身與電腦不相容,因此您必須將其設定為連接到Windows電腦。自推出以來,AppleVisionPro一直備受追捧,擁有其尖端功能和廣泛的可操作性,很容易理解原因。雖然您可以對其進行一些調整以適應PC,並且其功能在很大程度上取決於AppleOS,因此其功能將受到限制。如何將AppleVisionPro連接到我的電腦? 1.驗證系統要求你需要最新版本的Windows11(不支援自訂電腦和Surface設備)支援64位元2GHZ或更快的快速處理器高效能GPU,最

MicrosoftPaint在Windows11/10中不起作用嗎?嗯,這似乎是一個常見的問題,我們有一些很好的解決方案來解決這個問題。用戶一直抱怨說,當試圖使用MSPaint時,無法工作或打開。應用程式中的捲軸不起作用,貼上圖示沒有顯示,崩潰,等等。幸運的是,我們收集了一些最有效的故障排除方法來幫助您解決MicrosoftPaint應用程式的問題。為什麼MicrosoftPaint不起作用? MSPaint無法在Windows11/10PC上運行的一些可能原因如下:安全標識符已損壞。掛起的系統

標題:Linux系統中GDM的工作原理及設定方法在Linux作業系統中,GDM(GNOMEDisplayManager)是一種常見的顯示管理器,用於控制圖形使用者介面(GUI)登入和使用者會話管理。本文將介紹GDM的工作原理和設定方法,以及提供具體的程式碼範例。一、GDM的工作原理GDM是GNOME桌面環境下的顯示管理器,負責啟動X伺服器並提供登入介面,使用者輸

iPhone上的Shazam應用程式有問題? Shazam可協助您透過聆聽歌曲找到歌曲。但是,如果Shazam無法正常工作或無法識別歌曲,則必須手動對其進行故障排除。修復Shazam應用程式不會花費很長時間。因此,無需再浪費時間,請按照以下步驟解決Shazam應用程式的問題。修正1–禁用粗體文字功能iPhone上的粗體文字可能是Shazam無法正常運作的原因。步驟1–您只能從iPhone設定執行此操作。所以,打開它。步驟2–接下來,開啟其中的「顯示和亮度」設定。步驟3–如果您發現啟用了“粗體文本

了解LinuxBashrc:功能、配置與使用方法在Linux系統中,Bashrc(BourneAgainShellruncommands)是一個非常重要的配置文件,其中包含了系統啟動時自動運行的各種命令和設定。 Bashrc文件通常位於使用者的家目錄下,是一個隱藏文件,它的作用是為使用者自訂設定Bashshell的環境。一、Bashrc的功能設定環境

本文將指導您如何將照片從PhotosLegacy遷移至Windows11中的新Photos應用程式。微軟在Windows11中引入了經過改進的Photos應用程序,為用戶提供了更簡潔且更豐富的體驗。新的Photos應用程式在對照片進行分類方面與過去的PhotosLegacy應用程式有所不同。它會將照片像其他Windows檔案一樣整理到資料夾中,而不是建立專輯。然而,仍在使用PhotosLegacy應用程式的使用者可以輕鬆將他們的照片遷移至MicrosoftPhotos的新版本。什麼是Phot

0xc0000142是指Windows系統中的錯誤代碼,它通常與程式或應用程式無法正常啟動或運行的問題有關。當使用者嘗試開啟某個程式時,系統會顯示錯誤訊息"0xc0000142",且程式無法繼續運作。那麼,為什麼會出現0xc0000142錯誤呢?造成這種錯誤代碼的原因有很多種,以下是一些常見的原因和解決方法。設定檔損壞:某些程式的設定檔可能會被損壞,導致
