我有下面的代碼在我的CakePHP網站我AppError文件:CakePHP的AppError擴展功能
<?php
class AppError extends ErrorHandler
{
function _outputMessage($template)
{
$this->controller->render($template, 'error');
$this->controller->afterFilter();
echo $this->controller->output;
}
function error404()
{
$this->set('title_for_layout', 'Not Found (404)');
}
}
?>
第一功能的工作原理是使所有錯誤使用錯誤的佈局而不是默認的罰款。但第二個功能導致應用程序炸燬...爲什麼?它不應該只是擴展錯誤處理程序中的error404函數嗎?
感謝
似乎很奇怪,你需要通過任何東西,因爲我只是擴展功能不調用它。當你做其他方法有參數和邏輯,並不包括他們在你的覆蓋它工作正常嗎? – Cameron 2011-04-23 12:02:55
@Cameron你沒有擴展這個功能。你正在擴展這個類。你不能擴展一個函數,你只能覆蓋它。當你擴展一個類並繼承它的所有函數,並且如果你在擴展類中定義了一個函數(它在父類中出現),你可以從它的父類中覆蓋函數。因此,如果AppError對象正在調用'$ apperror-> erro404()'的某個地方,它預期父類的行爲。但是,如果在ApError中重寫此函數,它將調用該函數,並且如果此函數與父項不同,則會發生錯誤 – 2011-04-23 17:44:02