Olá galera, tudo bom? Gostaria de umas dicas de como utilizar um método de LOgs com esse destruct, idem ao que ele mostrou.
Cheguei a fazer um exemplo, só deu erro na hora de utilizar o fclose. Poderiam me dar uma forcinha.
<?php 
class Conta{
    private String $cpf;
    private String $nome;
    private float $saldo = 0.0;
    private static int $numeroContas = 0; //Isso é um Atributo da Class, São membros da classe em si, e não de cada instância (objeto).
    //Para Realizar o Log
    private static string $url = 'C:/xampp/htdocs/Alura/log/criacaoContas_log_';
    private static $fp;
    public function __construct(string $cpf, string $nome){
        $this->cpf = $cpf;
        $this->validaNomeTitular($nome);
        $this->nome = $nome;
        $this->saldo = 0;
        self::$numeroContas += 1; // Self> Sig. 'Está mesma class'.
        self::$fp = fopen(self::$url.'_'.self::$numeroContas.'.txt','w');
        fwrite(self::$fp, "Feito a criação de uma nova Conta: \n");
        fwrite(self::$fp, 'Nome: '.$this->nome.PHP_EOL);
        fwrite(self::$fp, 'Cpf: '.$this->cpf.PHP_EOL);
        fwrite(self::$fp, 'Data e Criação: '.date('d/m/Y').PHP_EOL );
        fwrite(self::$fp, '----------------------'.PHP_EOL);
    }
    public function __destruct(){
        self::$numeroContas--;
        fclose(self::$fp);
    }
    public function sacar(float $saldoASacar):void {
        $this->Log('ini','sacar', $saldoASacar);
        if($this->getSaldo() < $saldoASacar) {
            echo 'Não Ha Fundos suficiente';            
            return;
        }
        $this->saldo =  $this->getsaldo() - $saldoASacar ;
        $this->Log('fim');
    }
    public function depositar($saldoDeposito):void {
        $this->Log('ini','depositar', $saldoDeposito);
        if($saldoDeposito < 0){            
            echo 'Valor deve ser maior que zero';
            return;
        }
        $this->saldo = $this->getsaldo() + $saldoDeposito ;    
        $this->Log('fim');
    }
    public function statusConta(){   
        echo '<br><br>'.var_dump($this).'';
    }
    public function Log($sts, $nomeMetodo='', $param=''){
       echo '<br>';
        if($sts == 'ini'){
            $this->statusConta();
            echo '<br> Chamando a função '.$nomeMetodo."(".$param.")<br> <hr>";
        }else{
            $this->statusConta();
        }
    }
    //Esse método é utilizado somente nesta class, logo, não precisamos deixa-lo publico a todos
    private function validaNomeTitular(string $nome){
        if(strlen($nome) < 5){
            echo "O nome precisa ter pelo menos 5 caracteres!";        
            exit;
        }
    }
    // métodos getters e setters
    function getCpf(){
        return $this->cpf;
    }
    function getNome(){
        return $this->nome;
    }
    function getSaldo(){
        return $this->saldo;
    }
    public static function recuperaQtdContas():int{
        return self::$numeroContas;
    }
}
---- No Momento em que eu utilizo o __destruct()
me gera a seguinte mensagem
Warning: fclose(): supplied resource is not a valid stream resource in C:\xampp\htdocs\Alura\php_OO\src\Conta.php on line 36
Os Arquivos de logs são criados corretamente.
Obriado!!!