Le travailleur de solution suivante pour moi:
le plus tôt de votre script et peut-être que dans un mode debug ou DÉVELOPPEUR que je ne vous dois faire:
if(DEVELOPER_DEBUG === true)
ob_start();
Ensuite, où vous déclarez que Whoops j'ai fait:
if(DEVELOPER_DEBUG === true)
{
$_whoops = new \Whoops\Run();
$_whoops->pushHandler(function(){
ob_clean();
});
$_handler = new \Whoops\Handler\PrettyPageHandler();
$_whoops->pushHandler($_handler);
$_whoops->register();
}
Cela a fonctionné parfaitement dans mon utilisation c ase dans les scripts procéduraux pour effacer tout tampon généré avant que Whoops ne démarre sa propre sortie.
Pourquoi ça marche
ob_start() peut être appelé plusieurs fois, le tampon de rinçage ou doit clairement fonction à appeler le même nombre de fois que le démarrage a été appelé dans l'ordre. En faisant que votre application démarre son propre tampon, cela en fait une ressource qui peut être effacée, Whoops lance toujours aussi son propre tampon, donc en enregistrant un gestionnaire pour effacer le premier tampon (votre application) puis sur l'événement de une erreur, Whoops peut effacer ce tampon précédent.
tampon de contrôle
Par exemple, chaque appel de ob_start un tampon supplémentaire est créé.
Si vous appelez ob_start 3 fois, vous devez appeler ob_flush 3 fois afin de sortir tout le contenu mis en mémoire tampon.
Si vous l'appelez une fois, vous ne pourrez effacer ou vider le contenu généré avant la déclaration du prochain ob_start.
Peut être adaptatif pour la POO.