© all rights reserved. zend technologies, inc. jenseits von var_dump(): debugging in zf jan burkl...

18
© All rights reserved. Zend Technologies, Inc . Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

Upload: ignatz-weyland

Post on 06-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Jenseits von var_dump(): Debugging in ZFJan Burkl

System Engineer

Page 2: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Wer bin ich?

• Jan Burkl

[email protected]

• PHP Entwickler seit 2001

Projektarbeit

• Bei Zend seit 2006

System Engineer

• Zend Certified Engineer

PHP 5

Zend Framework

Page 3: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

var_dump() is Evil“But I still need to know more!!”

Page 4: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Do you do the var_dump()?

• Warum var_dump()?

Eine Art des Debuggens so alt wie PHP selbst

Schnell, einfach & man sieht was man braucht

• Es ist dabei in jeder Developers Toolbox

• Benötigt keine Nachforschung, Installation oder Zeit

Page 5: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Why var_dump() is evil!

• var_dump() verändert die Applikation und/oder den Library Code, um eine bestimmte Situation zu debuggen

• Nicht “web friendly” (<pre> tags und die() Statements)

Zend_Debug ist ein glorifiziertes var_dump()

• Zend_Debug::dump($var); // mehr Schreibarbeit, aber:

– Zend_Debug überprüft sapi und der Output wird mit htmlspecialchars gefiltert

– <pre> Tags um Output

– Label

– Rückgabewert

• Zend Debug ist keine Entschuldigung nicht in eine richtige Debugging Umgebung zu investieren

5 Insert->Header & Footer

Page 6: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Why is var_dump() evil? (cont.)

• Nicht entwicklerfreundlich:

Es muss sich gemerkt werden, wo var_dump() eingesetzt wurde

Evtl. sind mehrere var_dump() und die() Aufrufe notwendig, um ein Problem zu identifizieren

Evtl. muss die Umgebung für jede Debug Iteration zurückgesetzt werden

6 Insert->Header & Footer

Page 7: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Why is var_dump() evil? (cont.)

• Interferenzen mit “normalem” Output

“debugging data should not interfere with the content on your page”

• Kein echter Breakpoint

Keine Runtime Introspektion der Umgebung

Kein Kontext der “schlechten Situation”

7 Insert->Header & Footer

Page 8: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Debugging Mit Zend Studio

• ZendDebugger (PHP extension) von zend.com

Integriert in Zend Server (full oder CE), Binary

Weitere Option ist Xdebug (Derick Rethans)

• Zend Studio (paid) & PDT (free) haben beide Debugging-Fähigkeiten

• Zend Studio Toolbar nutzen

• Alles gibt’s hier:

http://www.zend.com/en/products/studio/downloads

8 Insert->Header & Footer

Page 9: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Demo: Debugging mit Zend Studio

9Insert->Header & Footer

Page 10: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

ZF und Firebug (FirePHP)

• FirePHP ist eine Bridge von PHP zu Firebug

• Benötigt Firebug

• Nutzt die Zend_Wildfire Komponente in ZF

• Implementierungs Hooks in ZF:

Zend_Log_Writer_Firebug

Zend_Db_Profiler_Firebug

Page 11: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Demo: ZF mit FirebugWildfire Support via Zend_Log_Writer_Firebug & Zend_Db_Profiler_FirePHP

11Insert->Header & Footer

Page 12: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

ZFDebug Toolbar (Scienta ZF Debug Bar)

• 3rd Party Tool

Entwickelt von Andreas Pankratz und Joakim Nygård

http://zfdebug.googlecode.com

• In-page Toolbar

• Kontra:

Wird Teil des Output Streams

• Pro:

Nur ein Div-Layer am Ende der Seite

Kann in jeder Umgebung eingesetzt werden, keine speziellen Tools notwendig

Page 13: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Demo: ZFDebug Toolbar

Page 14: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

ZF’s Zend Monitor Logger

• Zend Montior Logger in ZF eingebaut

Nur ein application.ini Schlüssel notwendig

• Zend Monitor ist Bestandteil von Zend Server

(nur Full Version, nicht CE Version)

30 Tage Trial

Page 15: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

ZF Zend Monitor Logger

Page 16: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Zend Studio & ZF

• Wie nutzt man beides zusammen?

• Gute Breakpoints in ZF:

• Gute Stellen für Breakpoints in ZF:

Bootstrap Methoden

Plugin Broker

Dispatcher

Action Controller init-Methode & erste Zeile einer Action

• “Expression” View nutzen, um Umgebung zu verstehen

Page 17: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Demo: Zend Studio Tipps/Tricks

Page 18: © All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer

©All rights reserved. Zend Technologies, Inc.

Danke schö[email protected]

http://framework.zend.com/