Casse de caractères
●
new \Foo\Bar();
●
src/Foo/Bar.php
●
namespace Foo;
class Bar { }
Slide 5
Slide 5 text
Affichage des logs
Slide 6
Slide 6 text
Affichage des logs
Slide 7
Slide 7 text
Symfony 2.5 :
Nouveautés du composant Debug
Symfony 2.next :
debug() au quotidien
Comment ça marche ?
Slide 8
Slide 8 text
var_dump()
/**
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name)
{
var_dump($this);
return array('name' => $name);
}
Slide 9
Slide 9 text
var_dump()
Slide 10
Slide 10 text
var_dump()
$obj = new stdClass();
$array = [$obj, &$obj, &$obj];
var_dump($array);
array(3) {
[0] =>
class stdClass#1 (0) {
}
[1] =>
class stdClass#1 (0) {
}
[2] =>
class stdClass#1 (0) {
}
}
Slide 11
Slide 11 text
Ladybug
Slide 12
Slide 12 text
debug()
●
Exacte, avec références hard et soft
●
Détaillée, avec infos spécialisées
●
Pretty et pratique
●
Just works : robuste, rapide et memory efficient
debug()
class foo
{
public $fileHandler;
protected $bar = 123;
private $baz = 456;
}
$h = fopen(__FILE__, 'rb');
$f = new foo();
$f->fileHandler = $h;
debug($f);
Slide 15
Slide 15 text
debug()
Slide 16
Slide 16 text
debug()
Slide 17
Slide 17 text
debug()
Slide 18
Slide 18 text
debug()
Slide 19
Slide 19 text
debug()
Slide 20
Slide 20 text
Symfony 2.5 :
Nouveautés du composant Debug
Symfony 2.next :
debug() au quotidien
Comment ça marche ?
Slide 21
Slide 21 text
Mécanisme interne
●
Copie de la variable
– Indépendante en terme de références
– Limitée en nombre d'items si nécessaire
– Adaptée aux objets rencontrés
●
Représentation de la copie
– CLI, HTML ou JSON
Slide 22
Slide 22 text
Intégration dans Symfony
●
un DataCollector pour les copies
extends \Symfony\Component\HttpKernel\DataCollector\DataCollector
{% extends '@WebProfiler/Profiler/layout.html.twig' %}
●
JSON comme intermédiaire
●
une Twig extension pour la fonction debug()
Slide 23
Slide 23 text
Pull request #10640
●
Composant VarDebug
en cours de discussion
●
extension en C
(merci J.Pauli)