Warning: fwrite() expects parameter 1 to be resource, null given
Primary tabs
При запуске кода записи строк в журнал выходит предупреждение:
Warning: fwrite() expects parameter 1 to be resource, null given ...
Warning: fclose() expects parameter 1 to be resource, null given ...
При этом файл не заполняется. Как исправить?
Код программы:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title> ООП </title>
</head>
<body>
<?php
require_once 'oop3FileLogger.php';
$jor = new FileLogger("Комплексные числа", 'C:/OpenServer/domains/testsite/OOP/complex.txt');
$jor->log("строка строка строка");
?>
</body>
</html>Описание класса:
<?php
class FileLogger
{
//Здесь описаны свойства/поля класса
public $f; //Открытый файл
public $name; // Имя журнала
public $lines = []; //Накапливаемые сроки
//Дальше описаны методы класса
// Запись строк в файл-журнал
public function __consruct($name, $fname)
{
$this->name = $name; //пользователь указывает имя журнала
$this->f = fopen($fname, "a+"); //пользователь указывает имя файла, который открывает конструктор для записи
}
public function log($str) //добавляет строку в массив lines, который накапливает в буфере все строки до закрытия программы
{
$this->lines[] = $str; // сохраняем строку в массив
}
public function __destruct() //Добавляет накопленные в буфере строки в файл, закрывает файл.
{
fwrite($this->f, join("", $this->lines));
fclose($this->f);
}
}- Log in to post comments
- 4377 reads
vedro-compota
Mon, 05/22/2017 - 12:40
Permalink
имя конструктора
public function __consract($name, $fname) { $this->name = $name; //пользователь указывает имя журналаа именно:
-- опечатка в имени конструктора, он просто не вызывается и потому в log() используется в качестве дескриптора null ,правильно:
_____________
матфак вгу и остальная классика =)