Bonjour j'ai rencontré un problème avec un tutoriel de grafikart

Celui ci : http://www.grafikart.fr/tutoriels/php/class-cache-340

if(!$Cache->start('test')){
}
$Cache->end();

tout d'abord quand j'écris ce bout de code, ça me marque 1 sur ma page... Alors que normalement ça ne doit rien afficher

Et si je fais quelque chose comme ça

if(!$Cache->start('test')){
    $var = 'test';
    echo $var;
}
$Cache->end();

J'ai toujours ce 1 d'afficher et mon fichier cache est bien créé mais il contient encore ce chiffre 1....

Ce chiffre 1 ne vient pas de la durée du cache qui pourrait être 1 minute, non j'ai essaye de mettre par exemple 12minutes et j'ai toujours ce 1....

Voici ma class

<?php
class Cache{
    public $dirname;
    public $duration; // Durée de vie du cache en minutes
    public $buffer;
    public function __construct($dirname, $duration){
        $this->dirname = $dirname;
        $this->duration = $duration;
    }
    public function write($filename, $content){
        return file_put_contents($this->dirname.'/'.$filename, $content);
    }
    public function read($filename){

        $file = $this->dirname.'/'.$filename;
        if(!file_exists($file)){
            return false;
        }
        $lifetime = (time() - filemtime($file)) / 60;
        if($lifetime > $this->duration){
            return false;
        }
        return file_get_contents($file);
    }
    public function delete($filename){
        $file = $this->dirname.'/'.$filename;
        if(file_exists($file)){
            unlink($file);
        }
    }
    public function clear(){
        $files = glob($this->dirname.'/*');
        foreach($files as $file){
            unlink($file);
        }
    }
    public function inc($file, $cachename = null){
        if(!$cachename){
            $cachename = basename($file);
        }
        if($content = $this->read($cachename)){
            echo $content;
            return true;
        }
        ob_start();
        require $file;
        $content = ob_get_clean();
        $this->write($cachename, $content);
        echo $content;
        return true;
    }
    public function start($cachename){
        if($content = $this->read($cachename)){
            echo $content;
            $this->buffer = false;
            return true;
        }
        ob_start();
        $this->buffer = $cachename;
    }
    public function end(){
        if(!$this->buffer){
            return false;
        }
        $content = ob_end_clean();
        echo $content;
        $this->write($this->buffer, $content);
    }
}
?>

Et voici la façon dont j'inclue tout ça

require 'class/class.cache.php';
$Cache = new Cache('cache/', 1);

Merci à vous

PS : Et si je fais juste ça

$Cache->start('test');

Ça affiche un 1 sur ma page...
Mais si je fais ça

$Cache->start();

ça n'affiche rien, pareil pour

$Cache->end();

1 réponse


MrSaooty
Auteur
Réponse acceptée

J'ai trouvé la solution ! Si jamais quelqu'un a le même problème :

dans

public function end(){

$content = ob_end_clean();

remplacé par

$content = ob_get_clean();

j'avais fais une erreur de frappe pendant le tuto !