1. 程式人生 > >PHP文件引入

PHP文件引入

報錯 tails 例如 gree 問題 特殊符號 腳本 ruby 引入

綜述和基本語法

  有4個文件加載語句:includerequireinclude_oncerequire_once

  • require函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。
  • include函數一般放在流程控制的處理部分中。PHP程序網頁在讀到 include的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化。
  • include有返回值,而require沒有
  • “require”的工作方式是為了讓PHP程序得到更高的效率,當它在同一個PHP網頁中解釋過一次後,第二次出現便不會再解釋,這是它的優點。不過嚴格來說,這也是它的唯一的缺點,因為它不會重復解釋引入的文件,所以當PHP網頁中使用循環或條件語句來引入文件時,“require”則不會做任何的改變。當有類似這樣的情形時,就必須使用“include”命令來引入 文件了。
  • 當PHP遇到一個利用“include”方式引入的文件,它就會解釋一次;遇到第二次時,PHP還是會重新解釋一次。與“require”相比,“include”的執行效率則會下降許多;而且當引入文件中包含了用戶自定義的函數時,PHP在解釋的過程中會發生函數重復定義的問題。不過“include”也不是沒有優點的,因為在PHP網頁中,它會每遇到一次“include”命令就會重復解釋一次,所以非常適合使用在循環或條件判斷的語句裏。
  • “include_once()”函數和“require_once()” 函數,會先檢查目標檔案的內容是不是在之前就已經導入過了,如果是,便不會再次重復導入同樣的內容。
  • 他們可以載入 php 或 html 文件。

文件加載的路徑問題

  前提說明:以下的說明舉例,以 include 為例,也適用於其他3各加載語句。
  有3種路徑形式可以使用。

相對路徑

  是相對於當前網頁文件所在的位置來定位某個被加載的文件位置,主要依賴以下2個特殊符號:
  . / :表示當前位置,即當前網頁文件所在的目錄(文件夾);
  . . /:表示上一級位置,即當前網頁文件所在目錄的上一級目錄;
  用這2個符號來表達位置信息,比如:

include "./page1.php";     //表示當前網頁文件所在文件夾的 page1.php 文件
include "../page2.php";
  • 1
  • 2

絕對路徑

  絕對路徑又分為本地絕對路徑和網絡絕對路徑。

本地絕對路徑

include "c:/d1/d2/p1.php";
  • 1

  特別註意:我們不應該在代碼中直接寫這種本地絕對路徑!但,其實這種本地絕對路徑的寫法是很常用的!
  那怎麽做,實例如下:
  技術分享

網絡絕對路徑

//實際這裏載入的通常也都是 html文件,因為該服務器會將 php 文件執行後返回過來
include "http://www.abc123.com.index.php";    
  • 1
  • 2

“無路徑”(不推薦)

  形式就是沒有給出路徑信息,而只給出文件名,不推薦。
  比如:

inclue "page1.php"; //此時通常其實php語言引擎會在當前網頁目錄下找該文件。
  • 1

關於路徑問題詳見:相對路徑與絕對路徑

文件載入和執行過程詳解

  第一步:從 include 語句處退出 php 腳本模式(進入 html 代碼模式)
  第二步:載入 include 語句所設定的文件中的代碼,並執行之(如同在當前文件中一樣)
  第三步:退出 html 模式,重新進入 php 腳本模式,繼續之後的代碼

技術分享

技術分享

技術分享

4個載入語句的區別

include 和 require 的區別

  include 載入文件失敗時(即沒有找到該文件),報一個“提示錯誤”,然後繼續執行後續代碼;
  require 載入文件失敗時,報錯並立即終止執行。
  通常,require 用於在程序中,後續的代碼依賴於載入的文件的時候。

include 和 include_once的區別

  include 載入的文件不判斷是否重復,只要有 include 語句,就會載入一次——即此時可能導致重復載入。
include_once 載入的文件會有內部判斷機制“前面代碼”是否已經載入過,就不再載入。

include_once 和 require_once 的區別

  同include和 require 的區別一樣

require 和 require_once 的區別

  同 include 和 include_once 的區別一樣

在被載入文件中 return 語句的作用

  include有返回值,而require沒有
   1.一個載入語句,如果載入成功,會有返回值,為1,如果載入失敗,則返回的是 false(通常不使用該返回值)

技術分享

技術分享

  但,如果被載入文件中有 return 語句,此時就有另外的機制和作用:
  2.return 語句此時的作用是終止載入過程——該 return 語句的後續代碼(被載入文件中的)不再載入。

技術分享

  3.return 語句也可用於該被載入文件載入時返回一個數據,形式為:return XX;

技術分享

PHP文件引入