$myVar=myFunction(array_reverse(explode('.', $_SERVER['SERVER_NAME'])));
這樣的嵌套函數有什麼問題嗎?調用函數作爲參數,這是不好的做法?
$myVar=myFunction(array_reverse(explode('.', $_SERVER['SERVER_NAME'])));
這樣的嵌套函數有什麼問題嗎?調用函數作爲參數,這是不好的做法?
這是確定的,只要你能保證每個函數總是返回所需鍵入。例如,如果某個函數可能返回一個FALSE值,則可能會將其轉換爲意外值。
提供的示例工作,因爲explode
(如調用)和array_reverse
都將始終返回一個數組。
一個反例:
mysqli_query(mysqli_connect(...), 'INSERT INTO tbl VALUES ....');
由於mysqli_connect
可能會返回一個資源或FALSE
它不應該被捆綁,像這樣。應該始終檢查返回值的正確性。
這是完全有效的做到這一點,但保持可讀。如果你嵌套15個函數調用或者嵌套幾個函數調用,每個函數調用都有幾個參數,那麼你將會有一個非常不穩定的調試體驗。
這可能是一個不好的做法,因爲它會使代碼更難理解,因此難以維護。
克服這個問題的一個好習慣是評論你的代碼(很重要)。
人們的巢穴功能一直如此。函數意味着以這種方式使用。因爲函數可以返回一個值,所以將一個變量賦值給一個函數,將該函數的值賦給一個PHP變量是有意義的。
感謝上帝的返回值的函數,否則,這將是把它的其他方式的一塌糊塗......
從其他非常好的答案中選擇,以表達關於返回值的有效性的觀點。 –