我正在研究https://github.com/Westie/OUTRAGEbot中的一些自定義代碼,並且對面向對象的東西不太熟悉,我遇到了一個問題。如何在擴展類時訪問方法
我試圖訪問一個方法(writeToLog
),我在Script文件夾中的另一個文件中定義了一個名爲Logger/Default.php的文件。從整個代碼中我可以看到的其他示例中,我應該只能使用$this->writeToLog
,但當我這樣做時沒有任何反應。從Logger/Default.php訪問方法的作品,我有文件正確的順序加載,所以我迷路了。我也嘗試過print_r $this
,使用parent::
等等。我知道這可能是簡單的,因爲我對面向對象的代碼缺乏瞭解,但是我現在處於困境。
每請求時,這裏是代碼的副本:
class Logger extends Script
{
public function writeToLog($folder=NULL, $logFile, $message)
{
if(empty($logFile) || empty($message))
{
error_log('No log file or message passed to logging class', 0, ROOT.'.logs/error.log');
return;
}
date_default_timezone_set('UTC');
$folder = (strlen($folder) > 0) ? "/".str_replace("#", "", $folder) : "";
$logFilePath = ROOT."/logs".$folder;
if(!file_exists($logFilePath)){ mkdir($logFilePath, 0775, true); $this->writeToLog(NULL, 'general.log', "$logFilePath does not exist, creating!"); }
$fullLogFile = $logFilePath."/".$logFile;
$message = "[".date('Y-m-d H:i:s')."]".$message."\n";
error_log($message, 3, $fullLogFile);
}
}
而在這其中後加載新的腳本:
class NewScriptName extends Script {
public function onChannelMessage($sChannel, $sNickname, $sMessage)
{
// Log the message to a log on the server
$this->writeToLog($sChannel, "chat_log.log", "$sNickname: $sMessage");
}
}
「沒有任何反應」通常意味着您沒有啓用正確的錯誤報告。做些無效的事情時你應該會收到錯誤信息! – kero 2015-01-09 18:35:20
你可以發佈一個「不」的工作示例或你自己的代碼嗎?你是否擴展了Logger類的類?該功能是否公開?保護?私人的?請介意@kingkero評論。 – JoshuaBehrens 2015-01-09 18:44:14
對不起,在代碼示例中添加。另外,我確保cli腳本正在進行日誌記錄,但是當我嘗試使用$ this-> writeToLog調用時,我沒有看到任何記錄。我也會期待一個錯誤或者什麼,但是沒有什麼 – 2015-01-09 18:50:18