Warning: fwrite() expects parameter 1 to be resource, null given

При запуске кода записи строк в журнал выходит предупреждение:

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);
    }
    
}
vedro-compota's picture

public function __consract($name, $fname) 
    {
        $this->name = $name; //пользователь указывает имя журнала

а именно:

public function __consract

-- опечатка в имени конструктора, он просто не вызывается и потому в log() используется в качестве дескриптора null ,правильно:

 public function __construct

_____________
матфак вгу и остальная классика =)