SlideShare a Scribd company logo
1 of 34
Download to read offline
Errors, Exceptions & Logging
by James Titcumb
at PHP Hampshire Oct ‘13
Errors
● Something broke… :)
● e.g.
○ Can’t connect to MySQL (mysqli_connect)
○ No such file or directory (fopen)
● Usually from PHP core
● Sometimes fatal (stop execution)
What are errors?
Types of PHP Errors
● E_ERROR
● E_WARNING
● E_NOTICE
● E_PARSE
● Others (E_STRICT, E_DEPRECATED) etc.
● User errors (E_USER_ERROR etc.)
E_ERROR
<?php
foo();
// Fatal error: Call to undefined
function foo() in /in//in/N2gbL on
line 3
E_WARNING
<?php
fopen('foo', 'r');
// Warning: fopen(foo): failed to
open stream: No such file or
directory in /in//in/tZHGY on line
3
E_NOTICE
<?php
$a = $b;
// Notice: Undefined variable: b in
/in//in/9dPC5 on line 3
E_PARSE
<?php
x c
// Parse error: syntax error,
unexpected 'c' (T_STRING) in
/in//in/fkEaj on line 3
Problems?
source: http://www.dpaddbags.com/blog/episode-119-technology-sucks/
Problems.
● Depends on “error_reporting” php.ini setting
● Displaying errors is UGLY
● Existence of “@” operator
● Only logs to file or syslog
● Easily ignored
● Not very “OO”
Ways Around
// Will raise E_NOTICE
fopen($somefile, 'r');
// No error! :)
if (file_exists($somefile)) {
fopen($somefile, 'r');
} else {
// nice handling...
}
Exceptions
● Something still broke
● Wider scope:
○ Logic errors
○ Flow control (for errors)
● “Catchable”
● Turn into fatal errors if not caught
● They are classes (can make your own)
● Common in other OO languages
What are exceptions?
Jargon Buster
● throw
Triggering an exception
● try
Try to run a piece of code which *may* throw an
exception
● catch
Handle an exception
● finally
Always run some code after a try/catch block
● Built in to PHP
● More descriptive than just “Exception”, e.g.:
○ InvalidArgumentException
○ LogicException
○ OutOfBoundsException
○ RuntimeException
○ see PHP manual for more
SPL Exceptions
Example (throw)
class Division
{
public function divide($a, $b)
{
if ($b == 0) {
throw new Exception(‘div by zero’);
}
return ($a / $b);
}
}
Example (catch)
$division = new Division();
try
{
$result = $division->divide(5, 0);
}
catch (Exception $exception)
{
$logger->warning($exception-
>getMessage());
}
Logging
Why use logging?
● Easier to find problems
● More detail
● “paper trail” for code
● Log where you want
What about Apache’s error_log?
source: http://up-ship.com/blog/?p=20903
Why?
● error_log is too basic (message, file, line)
● difficult to read / parse
● depends on “error_reporting” setting
● monolog
● phpconsole
● log4php
● RavenPHP + Sentry
● FirePHP (dev environment)
● Roll your own
Logging Options
Requirements (for everyone)
● Fire & forget
● Minimum or zero latency
● Highly available
● Should be PSR-3 compatible
● Log everything:
○ Exceptions
○ Errors
○ Fatal Errors
How they work...
source: http://mirror-sg-wv1.gallery.hd.org/_c/natural-science/cogs-with-meshed-teeth-AJHD.jpg.html
Capture Method
Data Storage
Logger (PSR-3)
Handler / Adapter
Typical PSR-3 Compatible Design
MonologErrorHandler
->handleException()
MongoDB
MonologLogger
->log()
MonologHandler
->handle()
Monolog
EdLogHandlerErrorHandler
->handleException()
RabbitMQ
EdLogLogger
->log()
EdLogPublisherAmqpPublisher
->publish()
Logging Server
Low Latency (using AMQP)
JSON payload
Capturing Logging
Use these and send output to $logger
● set_exception_handler()
○ Handles all uncaught exceptions
● set_error_handler()
○ Handles most errors
● register_shutdown_function()
○ Handles fatal errors
Sending Log Messages
● PSR-3 makes it easy
● However you want…
● Monolog has loads:
○ syslog-compatible / error_log
○ Email, HipChat
○ AMQP, Sentry, Zend Monitor, Graylog2
○ Redis, MongoDB, CouchDB
Summary
● PHP generates errors usually
● Exceptions are great in OOP context
● More control with exceptions
● Logging is important
● Logging is easy
● Short term investment, long term benefit
● NO EXCUSES!
Questions?
Feedback please...
https://joind.in/9452
Thanks!
@asgrim
github.com/asgrim

More Related Content

What's hot

Errors, Exceptions & Logging (PHPNW13 Uncon)
Errors, Exceptions & Logging (PHPNW13 Uncon)Errors, Exceptions & Logging (PHPNW13 Uncon)
Errors, Exceptions & Logging (PHPNW13 Uncon)James Titcumb
 
PHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet SolutionPHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet SolutionMazenetsolution
 
Perl exceptions lightning talk
Perl exceptions lightning talkPerl exceptions lightning talk
Perl exceptions lightning talkPeter Edwards
 
Introduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHPIntroduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHPwahidullah mudaser
 
Php(report)
Php(report)Php(report)
Php(report)Yhannah
 
Methods of debugging - Atomate.net
Methods of debugging - Atomate.netMethods of debugging - Atomate.net
Methods of debugging - Atomate.netVitalie Chiperi
 
PHP tutorial | ptutorial
PHP tutorial | ptutorialPHP tutorial | ptutorial
PHP tutorial | ptutorialPTutorial Web
 
Php using variables-operators
Php using variables-operatorsPhp using variables-operators
Php using variables-operatorsKhem Puthea
 
PHP - DataType,Variable,Constant,Operators,Array,Include and require
PHP - DataType,Variable,Constant,Operators,Array,Include and requirePHP - DataType,Variable,Constant,Operators,Array,Include and require
PHP - DataType,Variable,Constant,Operators,Array,Include and requireTheCreativedev Blog
 
Surprise! It's PHP :) (unabridged)
Surprise! It's PHP :) (unabridged)Surprise! It's PHP :) (unabridged)
Surprise! It's PHP :) (unabridged)Sharon Levy
 
PHP Workshop Notes
PHP Workshop NotesPHP Workshop Notes
PHP Workshop NotesPamela Fox
 
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...anshkhurana01
 

What's hot (20)

Errors, Exceptions & Logging (PHPNW13 Uncon)
Errors, Exceptions & Logging (PHPNW13 Uncon)Errors, Exceptions & Logging (PHPNW13 Uncon)
Errors, Exceptions & Logging (PHPNW13 Uncon)
 
PHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet SolutionPHP - Introduction to PHP - Mazenet Solution
PHP - Introduction to PHP - Mazenet Solution
 
PHP Basics
PHP BasicsPHP Basics
PHP Basics
 
php basics
php basicsphp basics
php basics
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
Perl exceptions lightning talk
Perl exceptions lightning talkPerl exceptions lightning talk
Perl exceptions lightning talk
 
Introduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHPIntroduction to PHP - Basics of PHP
Introduction to PHP - Basics of PHP
 
Php(report)
Php(report)Php(report)
Php(report)
 
Methods of debugging - Atomate.net
Methods of debugging - Atomate.netMethods of debugging - Atomate.net
Methods of debugging - Atomate.net
 
PHP tutorial | ptutorial
PHP tutorial | ptutorialPHP tutorial | ptutorial
PHP tutorial | ptutorial
 
Php using variables-operators
Php using variables-operatorsPhp using variables-operators
Php using variables-operators
 
Php Tutorial
Php TutorialPhp Tutorial
Php Tutorial
 
PHP - DataType,Variable,Constant,Operators,Array,Include and require
PHP - DataType,Variable,Constant,Operators,Array,Include and requirePHP - DataType,Variable,Constant,Operators,Array,Include and require
PHP - DataType,Variable,Constant,Operators,Array,Include and require
 
Basic of PHP
Basic of PHPBasic of PHP
Basic of PHP
 
Surprise! It's PHP :) (unabridged)
Surprise! It's PHP :) (unabridged)Surprise! It's PHP :) (unabridged)
Surprise! It's PHP :) (unabridged)
 
Data Types In PHP
Data Types In PHPData Types In PHP
Data Types In PHP
 
Bioinformatica 27-10-2011-p4-files
Bioinformatica 27-10-2011-p4-filesBioinformatica 27-10-2011-p4-files
Bioinformatica 27-10-2011-p4-files
 
PHP Workshop Notes
PHP Workshop NotesPHP Workshop Notes
PHP Workshop Notes
 
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...
Php mysql classes in navi-mumbai,php-mysql course provider-in-navi-mumbai,bes...
 
basics of php
 basics of php basics of php
basics of php
 

Similar to Errors, Exceptions & Logging (PHP Hants Oct '13)

Getting modern with logging via log4perl
Getting modern with logging via log4perlGetting modern with logging via log4perl
Getting modern with logging via log4perlDean Hamstead
 
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)James Titcumb
 
Low latency Logging (BrightonPHP - 18th Nov 2013)
Low latency Logging (BrightonPHP - 18th Nov 2013)Low latency Logging (BrightonPHP - 18th Nov 2013)
Low latency Logging (BrightonPHP - 18th Nov 2013)James Titcumb
 
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)James Titcumb
 
Php 5.6 From the Inside Out
Php 5.6 From the Inside OutPhp 5.6 From the Inside Out
Php 5.6 From the Inside OutFerenc Kovács
 
第1回PHP拡張勉強会
第1回PHP拡張勉強会第1回PHP拡張勉強会
第1回PHP拡張勉強会Ippei Ogiwara
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5Wim Godden
 
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016Codemotion
 
GettingStartedWithPHP
GettingStartedWithPHPGettingStartedWithPHP
GettingStartedWithPHPNat Weerawan
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from insidejulien pauli
 

Similar to Errors, Exceptions & Logging (PHP Hants Oct '13) (20)

Getting modern with logging via log4perl
Getting modern with logging via log4perlGetting modern with logging via log4perl
Getting modern with logging via log4perl
 
Key features PHP 5.3 - 5.6
Key features PHP 5.3 - 5.6Key features PHP 5.3 - 5.6
Key features PHP 5.3 - 5.6
 
Php mysql
Php mysqlPhp mysql
Php mysql
 
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
Low Latency Logging with RabbitMQ (PHP London - 4th Sep 2014)
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 
slidesharenew1
slidesharenew1slidesharenew1
slidesharenew1
 
Low latency Logging (BrightonPHP - 18th Nov 2013)
Low latency Logging (BrightonPHP - 18th Nov 2013)Low latency Logging (BrightonPHP - 18th Nov 2013)
Low latency Logging (BrightonPHP - 18th Nov 2013)
 
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
Low Latency Logging with RabbitMQ (Brno PHP, CZ - 20th Sep 2014)
 
PHP5.5 is Here
PHP5.5 is HerePHP5.5 is Here
PHP5.5 is Here
 
Php 5.6 From the Inside Out
Php 5.6 From the Inside OutPhp 5.6 From the Inside Out
Php 5.6 From the Inside Out
 
Php logging
Php loggingPhp logging
Php logging
 
第1回PHP拡張勉強会
第1回PHP拡張勉強会第1回PHP拡張勉強会
第1回PHP拡張勉強会
 
Php mysql ppt
Php mysql pptPhp mysql ppt
Php mysql ppt
 
Php tutorial
Php tutorialPhp tutorial
Php tutorial
 
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.4/5.5
 
PHP 5.3
PHP 5.3PHP 5.3
PHP 5.3
 
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
 
The new features of PHP 7
The new features of PHP 7The new features of PHP 7
The new features of PHP 7
 
GettingStartedWithPHP
GettingStartedWithPHPGettingStartedWithPHP
GettingStartedWithPHP
 
Quick tour of PHP from inside
Quick tour of PHP from insideQuick tour of PHP from inside
Quick tour of PHP from inside
 

More from James Titcumb

Living the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfLiving the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfJames Titcumb
 
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)James Titcumb
 
Climbing the Abstract Syntax Tree (Midwest PHP 2020)
Climbing the Abstract Syntax Tree (Midwest PHP 2020)Climbing the Abstract Syntax Tree (Midwest PHP 2020)
Climbing the Abstract Syntax Tree (Midwest PHP 2020)James Titcumb
 
Best practices for crafting high quality PHP apps (Bulgaria 2019)
Best practices for crafting high quality PHP apps (Bulgaria 2019)Best practices for crafting high quality PHP apps (Bulgaria 2019)
Best practices for crafting high quality PHP apps (Bulgaria 2019)James Titcumb
 
Climbing the Abstract Syntax Tree (php[world] 2019)
Climbing the Abstract Syntax Tree (php[world] 2019)Climbing the Abstract Syntax Tree (php[world] 2019)
Climbing the Abstract Syntax Tree (php[world] 2019)James Titcumb
 
Best practices for crafting high quality PHP apps (php[world] 2019)
Best practices for crafting high quality PHP apps (php[world] 2019)Best practices for crafting high quality PHP apps (php[world] 2019)
Best practices for crafting high quality PHP apps (php[world] 2019)James Titcumb
 
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)James Titcumb
 
Climbing the Abstract Syntax Tree (PHP Russia 2019)
Climbing the Abstract Syntax Tree (PHP Russia 2019)Climbing the Abstract Syntax Tree (PHP Russia 2019)
Climbing the Abstract Syntax Tree (PHP Russia 2019)James Titcumb
 
Best practices for crafting high quality PHP apps - PHP UK 2019
Best practices for crafting high quality PHP apps - PHP UK 2019Best practices for crafting high quality PHP apps - PHP UK 2019
Best practices for crafting high quality PHP apps - PHP UK 2019James Titcumb
 
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)Climbing the Abstract Syntax Tree (ScotlandPHP 2018)
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)James Titcumb
 
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)Best practices for crafting high quality PHP apps (ScotlandPHP 2018)
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)James Titcumb
 
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)James Titcumb
 
Best practices for crafting high quality PHP apps (PHP South Africa 2018)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)Best practices for crafting high quality PHP apps (PHP South Africa 2018)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)James Titcumb
 
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)James Titcumb
 
Climbing the Abstract Syntax Tree (Southeast PHP 2018)
Climbing the Abstract Syntax Tree (Southeast PHP 2018)Climbing the Abstract Syntax Tree (Southeast PHP 2018)
Climbing the Abstract Syntax Tree (Southeast PHP 2018)James Titcumb
 
Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)James Titcumb
 
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)James Titcumb
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)James Titcumb
 
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)James Titcumb
 
Climbing the Abstract Syntax Tree (PHP UK 2018)
Climbing the Abstract Syntax Tree (PHP UK 2018)Climbing the Abstract Syntax Tree (PHP UK 2018)
Climbing the Abstract Syntax Tree (PHP UK 2018)James Titcumb
 

More from James Titcumb (20)

Living the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdfLiving the Best Life on a Legacy Project (phpday 2022).pdf
Living the Best Life on a Legacy Project (phpday 2022).pdf
 
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
Tips for Tackling a Legacy Codebase (ScotlandPHP 2021)
 
Climbing the Abstract Syntax Tree (Midwest PHP 2020)
Climbing the Abstract Syntax Tree (Midwest PHP 2020)Climbing the Abstract Syntax Tree (Midwest PHP 2020)
Climbing the Abstract Syntax Tree (Midwest PHP 2020)
 
Best practices for crafting high quality PHP apps (Bulgaria 2019)
Best practices for crafting high quality PHP apps (Bulgaria 2019)Best practices for crafting high quality PHP apps (Bulgaria 2019)
Best practices for crafting high quality PHP apps (Bulgaria 2019)
 
Climbing the Abstract Syntax Tree (php[world] 2019)
Climbing the Abstract Syntax Tree (php[world] 2019)Climbing the Abstract Syntax Tree (php[world] 2019)
Climbing the Abstract Syntax Tree (php[world] 2019)
 
Best practices for crafting high quality PHP apps (php[world] 2019)
Best practices for crafting high quality PHP apps (php[world] 2019)Best practices for crafting high quality PHP apps (php[world] 2019)
Best practices for crafting high quality PHP apps (php[world] 2019)
 
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)Crafting Quality PHP Applications (PHP Joburg Oct 2019)
Crafting Quality PHP Applications (PHP Joburg Oct 2019)
 
Climbing the Abstract Syntax Tree (PHP Russia 2019)
Climbing the Abstract Syntax Tree (PHP Russia 2019)Climbing the Abstract Syntax Tree (PHP Russia 2019)
Climbing the Abstract Syntax Tree (PHP Russia 2019)
 
Best practices for crafting high quality PHP apps - PHP UK 2019
Best practices for crafting high quality PHP apps - PHP UK 2019Best practices for crafting high quality PHP apps - PHP UK 2019
Best practices for crafting high quality PHP apps - PHP UK 2019
 
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)Climbing the Abstract Syntax Tree (ScotlandPHP 2018)
Climbing the Abstract Syntax Tree (ScotlandPHP 2018)
 
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)Best practices for crafting high quality PHP apps (ScotlandPHP 2018)
Best practices for crafting high quality PHP apps (ScotlandPHP 2018)
 
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP South Africa 2018)
 
Best practices for crafting high quality PHP apps (PHP South Africa 2018)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)Best practices for crafting high quality PHP apps (PHP South Africa 2018)
Best practices for crafting high quality PHP apps (PHP South Africa 2018)
 
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)
Climbing the Abstract Syntax Tree (PHP Developer Days Dresden 2018)
 
Climbing the Abstract Syntax Tree (Southeast PHP 2018)
Climbing the Abstract Syntax Tree (Southeast PHP 2018)Climbing the Abstract Syntax Tree (Southeast PHP 2018)
Climbing the Abstract Syntax Tree (Southeast PHP 2018)
 
Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)Crafting Quality PHP Applications (PHPkonf 2018)
Crafting Quality PHP Applications (PHPkonf 2018)
 
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
Best practices for crafting high quality PHP apps (PHP Yorkshire 2018)
 
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)Crafting Quality PHP Applications: an overview (PHPSW March 2018)
Crafting Quality PHP Applications: an overview (PHPSW March 2018)
 
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)
Kicking off with Zend Expressive and Doctrine ORM (PHP MiNDS March 2018)
 
Climbing the Abstract Syntax Tree (PHP UK 2018)
Climbing the Abstract Syntax Tree (PHP UK 2018)Climbing the Abstract Syntax Tree (PHP UK 2018)
Climbing the Abstract Syntax Tree (PHP UK 2018)
 

Recently uploaded

Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...
Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...
Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...Newman George Leech
 
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdf
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdfPrestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdf
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdffaheemali990101
 
A Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfA Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfTim Wilmath
 
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...lizamodels9
 
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptx
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptxLCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptx
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptxTom Blefko
 
Ryan Mahoney - How Property Technology Is Altering the Real Estate Market
Ryan Mahoney - How Property Technology Is Altering the Real Estate MarketRyan Mahoney - How Property Technology Is Altering the Real Estate Market
Ryan Mahoney - How Property Technology Is Altering the Real Estate MarketRyan Mahoney
 
SVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN International Corp.
 
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857Low Rate Call Girls in Triveni Complex Delhi Call 9990771857
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857delhimodel235
 
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdf
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdfRustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdf
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdfmonikasharma630
 
Dynamic Netsoft A leader In Property management Software
Dynamic Netsoft A leader In Property management SoftwareDynamic Netsoft A leader In Property management Software
Dynamic Netsoft A leader In Property management SoftwareDynamic Netsoft
 
Experion Elements Sector 45 Noida_Brochure.pdf.pdf
Experion Elements Sector 45 Noida_Brochure.pdf.pdfExperion Elements Sector 45 Noida_Brochure.pdf.pdf
Experion Elements Sector 45 Noida_Brochure.pdf.pdfkratirudram
 
Brigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- BrochureBrigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- Brochurefaheemali990101
 
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...lizamodels9
 
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCR
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCRCall Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCR
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCRasmaqueen5
 
Partner With the Golden Life Community for Single Women Over 55
Partner With the Golden Life Community for Single Women Over 55Partner With the Golden Life Community for Single Women Over 55
Partner With the Golden Life Community for Single Women Over 55Ron Surz
 
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhidelhimodel235
 
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdf
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdfShapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdf
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdfashiyadav24
 
Managed Farmland Brochures to get more in
Managed Farmland Brochures to get more inManaged Farmland Brochures to get more in
Managed Farmland Brochures to get more inknoxdigital1
 

Recently uploaded (20)

Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...
Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...
Eco-Efficient Living: Redefining Sustainability through Leech's Green Design ...
 
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Shahdara (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdf
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdfPrestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdf
Prestige Rainbow Waters Raidurgam, Gachibowli Hyderabad E- Brochure.pdf
 
A Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdfA Brief History of Intangibles in Ad Valorem Taxation.pdf
A Brief History of Intangibles in Ad Valorem Taxation.pdf
 
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...
Call Girls In The Lalit New Delhi ❤️8860477959 Good Looking Escorts In 24/7 D...
 
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Kashmiri Gate Delhi 💯Call Us 🔝8264348440🔝
 
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptx
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptxLCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptx
LCAR Unit 22 - Leasing and Property Management - 14th Edition Revised.pptx
 
Ryan Mahoney - How Property Technology Is Altering the Real Estate Market
Ryan Mahoney - How Property Technology Is Altering the Real Estate MarketRyan Mahoney - How Property Technology Is Altering the Real Estate Market
Ryan Mahoney - How Property Technology Is Altering the Real Estate Market
 
SVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property BroadcastSVN Live 4.22.24 Weekly Property Broadcast
SVN Live 4.22.24 Weekly Property Broadcast
 
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857Low Rate Call Girls in Triveni Complex Delhi Call 9990771857
Low Rate Call Girls in Triveni Complex Delhi Call 9990771857
 
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdf
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdfRustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdf
Rustomjee The Panorama At Pali Hill, Bandra West, Mumbai - Brochure.pdf
 
Dynamic Netsoft A leader In Property management Software
Dynamic Netsoft A leader In Property management SoftwareDynamic Netsoft A leader In Property management Software
Dynamic Netsoft A leader In Property management Software
 
Experion Elements Sector 45 Noida_Brochure.pdf.pdf
Experion Elements Sector 45 Noida_Brochure.pdf.pdfExperion Elements Sector 45 Noida_Brochure.pdf.pdf
Experion Elements Sector 45 Noida_Brochure.pdf.pdf
 
Brigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- BrochureBrigade Neopolis Kokapet, Hyderabad E- Brochure
Brigade Neopolis Kokapet, Hyderabad E- Brochure
 
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...
Call Girls In Sahibabad Ghaziabad ❤️8860477959 Low Rate Escorts Service In 24...
 
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCR
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCRCall Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCR
Call Girls In Peeragarhi, Delhi↫8447779280↬Call Girls in Peeragarhi Delhi NCR
 
Partner With the Golden Life Community for Single Women Over 55
Partner With the Golden Life Community for Single Women Over 55Partner With the Golden Life Community for Single Women Over 55
Partner With the Golden Life Community for Single Women Over 55
 
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi
9990771857 Call Girls in Noida Sector 10 Noida (Call Girls) Delhi
 
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdf
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdfShapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdf
Shapoorji Pallonji Parkwest Sequoia Tower Bangalore.pdf
 
Managed Farmland Brochures to get more in
Managed Farmland Brochures to get more inManaged Farmland Brochures to get more in
Managed Farmland Brochures to get more in
 

Errors, Exceptions & Logging (PHP Hants Oct '13)