而在root目錄下的3.php印出」root”, 在subdir目錄下的3.php印出」subdir”; 現在, 問題來了: 1. 當在root目錄下運行1.php, 會得到什麼輸出? 2. 在subdir下運行上一級目錄的1.php, 有會得到什麼輸出? 3. 當取消include_path中的目前目錄path(也就是include_path=”path_to_subdir”), 上面兩個問題又會是什麼輸出? PHP中的include_path PHP在遇到require(_once)/include(_once)的指令的時候, 首先會做如下的判斷: 要包含的檔案路徑是絕對路徑麼? 如果是, 則直接包含, 並結束. 如果不是, 進入另外的邏輯(經過多次呼叫, 巨集展開後進入_php_stream_fopen_with_path)尋找此檔案. 接下來, 在_php_stream_fopen_with_path, 會做以下判斷: 要包含的檔案路徑是相對路徑麼(形如./file, ../dir/file, 以下用"目錄相對路徑取代")? 如果是, 則跳過include_path的作用邏輯, 直接解析相對路徑(隨後單獨介紹). 會根據include_path,和目前執行檔的path組成一個待選的目錄列表, 例如對於文章前面的例子來說, 會形成一個如下的待選列表 ".:path_to_subdir:current_script_dir" 然後, 依序從待選列表頭部開始, 根據DEFAULT_DIR_SEPARATOR(本文的環境是”:”)取出待選列表中的一個路徑, 然後把要包含的文件名附加在這個路徑後面, 進行嘗試.如果成功包含, 則回傳, 否則繼續下一個待選路徑. 到現在為止, 我們已經可以回答我開頭提出的3個問題了. 1. 因為在root目錄下執行, 所以在1.php中包含2.php的時候, include_path的第二個待選路徑起了作用(path_to_subdir), 找到了path_to_subdir/2.php, 在2.php包含3.php的時候, 目前工作目錄是root下, 所以在包含3.php的時候, include_path的第一個待選路徑”.”(當前工作目錄)下就找到的匹配的文件,所以得到的輸出是”root”. 2. 同1, 只不過當前的路徑是subdir, 所以得到的輸出是”subdir”.
那麼將會是current_script_dir起作用, 而這個時候current_script_dir是2.php的路徑, 所以還是會得到」subdir」的輸出. 目錄相對路徑 在使用目錄相對路徑的情況下, 相對路徑的基點, 永遠都是當前工作目錄.
如果在root目錄下執行, 2.php中尋找3.php將會在當前目錄的相對路徑下尋找, 所以得到的輸出是”root”, 而如果是在subdir下執行上一級目錄的1.php(php -f ../1.php), 將會因為在subdir下找不到”./subdir/2.php”而異常退出. 總結 1. 因為使用include_path和相對路徑的情況下,效能會和尋找的次數有關,最壞的情況下,如果你有10個include_path,那麼最多可能會重試11次才能找到要包含的文件,所以,在能使用絕對路徑的情況下最好使用絕對路徑。 2. 因為目錄相對路徑的basedir,永遠都是當前工作路徑,如果要使用,需要和實際部署路徑相關,所以實際使用的很少(當然,也有藉助chdir來完成的模組)。 3. 在模組化的系統設計中,一般應該在模組內,透過取得模組的部署路徑(dirname(__FILE__),php5.3以後更是提供了__DIR__常數)從而使用絕對路徑。 |

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP在數據庫操作和服務器端邏輯處理中使用MySQLi和PDO擴展進行數據庫交互,並通過會話管理等功能處理服務器端邏輯。 1)使用MySQLi或PDO連接數據庫,執行SQL查詢。 2)通過會話管理等功能處理HTTP請求和用戶狀態。 3)使用事務確保數據庫操作的原子性。 4)防止SQL注入,使用異常處理和關閉連接來調試。 5)通過索引和緩存優化性能,編寫可讀性高的代碼並進行錯誤處理。

在PHP中使用預處理語句和PDO可以有效防範SQL注入攻擊。 1)使用PDO連接數據庫並設置錯誤模式。 2)通過prepare方法創建預處理語句,使用佔位符和execute方法傳遞數據。 3)處理查詢結果並確保代碼的安全性和性能。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP可以輕鬆創建互動網頁內容。 1)通過嵌入HTML動態生成內容,根據用戶輸入或數據庫數據實時展示。 2)處理表單提交並生成動態輸出,確保使用htmlspecialchars防XSS。 3)結合MySQL創建用戶註冊系統,使用password_hash和預處理語句增強安全性。掌握這些技巧將提升Web開發效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。