好吧,我真的不知道怎麼說這個問題,但讓我解釋一下。php如何執行分配給變量的函數?
假設我有一個變量:
$file = dirname(__FILE__);
如果我分配$file
另一個變量會發生什麼?
$anotherVariable = $file;
dirname
函數是否在每次賦值時執行?
感謝您的任何幫助。
好吧,我真的不知道怎麼說這個問題,但讓我解釋一下。php如何執行分配給變量的函數?
假設我有一個變量:
$file = dirname(__FILE__);
如果我分配$file
另一個變量會發生什麼?
$anotherVariable = $file;
dirname
函數是否在每次賦值時執行?
感謝您的任何幫助。
號PHP是必要的,所以賦值表達式的右手側被評價,並將結果存儲「中的」左手側(在簡單,幾乎無處不在的情況下,命名爲左側可變側)。
$a = $b; // Find the value of $b, and copy it into the value of $a
$a = 5 + 2; // Evaulate 5 + 2 to get 7, and store this in $a
$a = funcName(); // Evaluate funcName, which is equivalent to executing the code and obtaining the return value. Copy this value into $a
當你引用賦值這變得有點複雜($ A = & $ B),但我們不必擔心,就目前而言。
PHP沒有這樣的瓶蓋。
目錄名(FILE )
此函數返回字符串。
$ anotherVariable = $文件;
給$ anotherVariable相同的字符串值。
所以我相信回答你的問題是「不」,它不會每次執行。
沒有在任何情況下。
PHP的功能都沒有標識其指向類函數的實例,你可以在Java,ActionScript中,javascript等等看......這就是爲什麼你不能存儲鏈接本身的功能給一個變量。這就是爲什麼每次你調用函數的時候,它都和你包含()一個腳本一樣。當然有差異,但在這個問題的背景下,include()和調用一個函數幾乎是相同的。
不要與這種情況下
function myFunc() {return 'hello world';}
$func = 'myFunc';
$a = $func();
echo $a; // hello world
閱讀關於這種情況下here這種行爲是專門爲PHP混淆。對其他語言不太確定 - 也許有些地方不適合。與此類似,但我從未遇到過它。
$a = function(){ echo "Hello!"; };
$a();
答案小問題:
$file = dirname(__FILE__);
//means:
//"Evaluate/Execute function dirname() and store its return value in variable $file"
如果我分配$文件到另一個變量會發生什麼?
如果我們談論的是常規的賦值($anotherVariable = $file;
),
它只是值複製從$file
到$anotherVariable
都是獨立變量。
是否每次指定dirname函數都會執行?
不,它不。因爲執行只能通過()
完成。否()
=沒有執行。
關閉可能是錯誤的,但php的功能不是一流的公民 – catsby 2009-05-22 13:45:34