1 <?php 2 require_once("config.php"); 3 class Log{ 4 var $file, $filename; 5 function Log() { 6 $config=new Config(); 7 $conf=$config->getconfig(); 8 $this->filename=$conf["log"]["file"]; 9 if(!is_writable($this->filename)) { 10 // file does not exist or not writeable 11 // make attempt to create file for write 12 $file=@fopen($this->filename,"a"); 13 if(!$file) { 14 echo "Error! Cannot open logfile ".$this ->filename." for writing. Stop all."; 15 exit(1); 16 } 17 fclose($file); 18 } 19 } 20 21 function Add($text) { 22 $file=@fopen($this->filename,"a"); 23 if(!$file) { 24 echo "Error! Cannot open logfile ".$this ->filename." for writing. Stop all."; 25 exit(1); 26 } 27 fwrite($file,date("r")." ".$text."\n"); 28 fclose($file); 29 } 30 } 31 ?>
6-19 - конструктор класса. Его задача присвоить переменной $file (4) имя файла, в который можно писать. Если файла нет, он попытается его создать. Если же он есть и его нельзя по каким-то причинам открыть на запись, все должно остановиться с простыми и понятными криками на экране.
21-29 - функция, которую мы будем вызывать для добавления сообщений об ошибке. Строки 23-26 служат для обработки ситуации, когда файлу поменяли права после создания класса. Если его просто стерли, то функция попытается создать его заново (режим доступа "а", смотреть мануал по fopen)