2009-11-13 18 views
0

說我有file.php具有三種功能和echo聲明:如何在文件中處理PHP函數?

function one() { 
    return three() . ' This is one.'; 
} 

function two() { 
    return 'This is two.'; 
} 

function three() { 
    return 'This is three.'; 
} 

echo one(); // string(xx) "This is three. This is one." 

首先,它是一般可以接受的function one()電話function three()即使function three()後在文件中出現?

其次,當file.php被加載到瀏覽器中(從而在服務器上執行PHP),PHP計算返回值function two(),即使它從未被調用?

進一步閱讀關於PHP如何處理這種普通事情的任何鏈接都會很好。

+0

以下所有的好答案。 – Jeff

回答

7

首先,是普遍接受 有一個函數()通話功能 的三(),即使功能的三() 後來在文件中出現?

當然可以。源順序與您調用函數的順序無關 - 在執行第一行之前,它將全部解析並可用。

其次,當file.php在 瀏覽器加載,並PHP計算兩個作用()的返回值 ,即使 這是從來沒有叫什麼名字?

不會。在解析過程中會檢查語法錯誤,但就是這樣 - 這些將是E_PARSE級錯誤。其他錯誤只能在運行時發現,並且會是E_ERROR,E_WARNING或E_NOTICE級錯誤。

http://us2.php.net/manual/en/errorfunc.constants.php

+0

我不記得完全,但是不是用PHP5添加的,還是其他的東西(我指的是問題1 ...)? – Franz

+0

這裏沒有什麼是PHP5只有 –

+0

好的,非常感謝。 – Franz

1

對於第二個問題,答案是NO,它不會運行該函數,除非它被明確調用。並且寫入函數的順序並不重要,因此您擁有的代碼將起作用。

PHP不在瀏覽器中運行,它由服務器運行。

1

PHP查找類和函數的名稱,當他們在運行時使用,不按當有問題的代碼被解析爲第一次。

因此,在one()內部運行three()是可以的,只要在第一次運行one()之前解析three()的函數聲明即可。

0

函數或類聲明的順序無關緊要。唯一的一點是在通話之前宣佈。 如果兩個不會被調用,它將被解析但不會被遺漏。