php四種文件加載語句

      網友投稿 910 2022-05-28

      https://mp.weixin.qq.com/s/Wsn4grDRxVIgMfu__E_oWQ

      1、include

      2、require

      3、include_once

      4、require_once

      方法詳解:

      include?語句包含并運行指定文件。

      require?和?include?幾乎完全一樣,除了處理失敗的方式不同之外。require?在出錯時產生?E_COMPILE_ERROR(編譯致命錯誤 64 編譯時致命性錯。這就像由Zend腳本引擎生成了一個?E_ERROR。) 級別的錯誤。換句話說將導致腳本中止而?include只產生警告(E_WARNING),腳本會繼續運行。

      include_once?語句在腳本執行期間包含并運行指定文件。此行為和?include?語句類似,唯一區別是如果該文件中已經被包含過,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。可以用于在腳本執行期間同一個文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變量重新賦值等問題。

      require_once?語句和?require?語句完全相同,唯一區別是?PHP?會檢查該文件是否已經被包含過,如果是則不會再次包含。

      總結:

      include?和?require?語句都是包含并運行指定文件,不同的是處理失敗的方式不同,所以一般 require 用于加載重要文件,比如加載框架的引導文件,如果出錯將終止程序,include?一般用于加載配置文件或者第三方擴展庫等,比如?composer?就是用的?include?加載文件的。

      include_once?和?require_once?語句與?include?和?require?語句的不同就是,如果該文件已經包含過就不會再次包含了,這在避免文件重復加載,函數重定義,變量重新賦值等問題上有用,但是一定程度上會有性能損耗問題,畢竟需要檢查是否加載過。所以一般確定的情況下會優先使用?include?和?require?,而不是?include_once?和?require_once?語句。

      實驗

      擴展知識:

      包含文件的語句會受php.ini?和?include_path(;include_path = ".:/php/includes")配置項影響,相關函數:

      ini_set()?- 為一個配置選項設置值

      set_include_path?- 設置當前的?include_path?配置選項

      get_include_path()?- 獲取當前的?include_path?配置選項

      restore_include_path()?- 還原?include_path?配置選項的值

      直接引入(包含)文件默認是以上面set_include_path設置的目錄為環境目錄,環境目錄找不到再從當前目錄找

      /?表示服務器根目錄,linux上面直接表示磁盤根目錄,Windows下面表示某個磁盤根目錄例如D:\,realpath()可以返回絕對路徑。

      ./?表示當前運行文件的同級目錄(入口),而不是當前腳本所在的目錄(include 語句所在腳本文件的目錄)

      如果以相對于當前腳本文件引用文件請用__DIR__常量

      注意:第一種情況,請小心了!這個一般表示從當前目錄找,但是什么是當前目錄呢?這個不同情況是不同的,它會先把當前運行文件的目錄當成當前目錄,如果找不到,再把當前腳本所在的目錄當成當前目錄,從當前腳本所在目錄開始找,如果還找不到就報錯,引入文件不存在。

      所以如果意圖清楚,最好是使用最后兩種方式引入文件,這樣能減少不必要的麻煩,另外使用絕對路徑比使用相對路徑加載文件性能更高,這樣能避免系統去解析相對路徑而耗費一些時間。

      當前運行文件,當前腳本,請注意仔細理解它們的差別,前者作為入口運行,后者則被腳本通過引用的方式調用。魔術常亮\__FILE\__,\__DIR\__?就是后者的文件名(包含完整的絕對路徑)和目錄。

      關于路徑的其他引申

      php四種文件加載語句

      PHP腳本這種文件相互引用包含的關系可和網頁中靜態文件css中的../路徑不同,css中的路徑之和所在css文件url路徑相關,和網頁沒有半毛錢關系,網頁只是加載它而已,但是如果css中使用/那情況就不同了,一般/為根域名,再說一遍,靜態文件中除了/其他的路徑都是相對于當前靜態文件的,和網頁地址沒有關系。網頁中的./和/則是相對于當前url路徑(對于pathinfo也沒有關系,不會受影響,認不出是假目錄的)和根域。

      還可以通過注冊自動加載方法來實現自動加載,框架大部分都實現了自動加載,不然手動寫包含語句不利于維護,太麻煩。

      PHP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Go菜鳥筆記:第三章 Go常量、枚舉、數學運算
      下一篇:Java入門之~基礎語法
      相關文章
      亚洲日韩精品一区二区三区| 自拍偷自拍亚洲精品第1页| 亚洲日韩中文无码久久| 国产亚洲成在线播放va| 亚洲精品乱码久久久久久蜜桃图片| 亚洲电影在线播放| 亚洲av网址在线观看| 亚洲av丰满熟妇在线播放| 亚洲va无码va在线va天堂| 亚洲国产精品无码专区| 亚洲av无码一区二区三区网站| 久久亚洲精品视频| 久久亚洲精品中文字幕无码 | 亚洲精品无码专区久久久| 国产亚洲精品拍拍拍拍拍| 激情综合色五月丁香六月亚洲| 亚洲精品成人无码中文毛片不卡| 久久亚洲国产午夜精品理论片| 亚洲av伊人久久综合密臀性色 | 老司机亚洲精品影院无码| 亚洲黄色免费网站| 亚洲AV综合色区无码二区爱AV| 亚洲乱人伦精品图片| 亚洲 日韩 色 图网站| 亚洲精品无码你懂的| 无码专区一va亚洲v专区在线 | 亚洲欧洲春色校园另类小说| 亚洲av永久综合在线观看尤物| 亚洲综合在线一区二区三区| 亚洲AV无码资源在线观看| 亚洲国产精品一区二区三区久久| 国产AV无码专区亚洲AWWW | 亚洲第一成年免费网站| 一区国严二区亚洲三区| 中文字幕人成人乱码亚洲电影| 亚洲成在人线av| 亚洲精品在线免费观看| 国产亚洲玖玖玖在线观看| 大桥未久亚洲无av码在线| 中文字幕亚洲日韩无线码| 亚洲AV无码不卡在线播放|