2012-03-16 123 views
1

我在cakephp-1.2核心文件中看到了一個函數。創建一個具有相同名稱的函數的包裝

/** 
* Convenience method for header() 
* 
* @param string $status 
* @return void 
* @access public 
*/ 
function header($status) { 
    header($status); 
} 

看到https://github.com/cakephp/cakephp/blob/1.2/cake/libs/controller/controller.php#LC638

什麼願他們正在重新定義同名函數的原因是什麼? 它會工作嗎?我認爲頭文件函數會創建無限遞歸。 我不知道如何檢查它是否創建了無限遞歸。

回答

5

見代碼的頂部40行:

class Controller extends Object { 

該方法是Controller::header,所以不會覆蓋header。你不能「覆蓋」PHP函數:你只會得到一個錯誤。

+0

更確切地說,它不會與'header'衝突*。 – Jon 2012-03-16 08:11:08

+0

@Jon我只是想澄清一點! – lonesomeday 2012-03-16 08:11:44

+0

這是正確的答案,但它是可能的重寫函數 - http://stackoverflow.com/questions/2326835/redefine-built-in-php-functions – 2012-03-16 08:14:34

相關問題