thePHP.cc at IPC 2010
Your Tests are lying!
Sebastian Bergmann, 2010-10-11, 11:45 AM - 12:45 PM, Zagreb I
Unit Tests help reducing the cost and risk of any individual change smaller. But how do you know that your tests are not lying and give you a false sense of confidence? In this session you will learn how to automatically detect problems in your test code, so called Test Smells, and how to avoid them. You will also learn how to write effective tests that will pay you back with information.
Why MVC is not an application architecture ...
Stefan Priebsch, 2010-10-11, 11:45 AM - 12:45 PM, Gutenberg I
... and how this should affect your code. Pretty much every PHP framework is based on MVC. We will explore what MVC was originally meant to be and how it is used (and abused) in web applications these days. We will find out where the model hides, and how to organize an application's business logic and clearly separate concerns. As a bonus, unit testing will become a lot easier.
Introduction to Testing with Selenium
Arne Blankerts, 2010-10-11, 03:45 PM - 04:45 PM, Zagreb I
Practical PHP Refactoring
Stefan Priebsch, 2010-10-12, 09:00 AM - 10:00 AM, Gutenberg III
Refactoring - modifying software without affecting its behavior - can dramatically cut maintenance costs, and help avoid rewriting an application from scratch. We will demonstrate various refactoring patterns and use them on real-life code examples. What impact does refactoring have on application architecture, and how can developers sell refactoring to customers and the management?
Agility and Quality
Sebastian Bergmann, 2010-10-12, 10:15 AM - 11:15 AM, Zagreb I
Agile methodologies and processes have changed how PHP-based software projects are realized. This session gives an overview on how agility and quality can go hand-in-hand helping to deliver software on time and in budget. Agility does not stop at software development, though, but extends into other realms such as web operations. The audience will learn about some of the core ideas of DevOps, such as "Dark Launches", "Feature Flags" or "Gradual Ramps" that help with implementing continuous deployment strategies.
State of the Mocks
Sebastian Bergmann, 2010-10-13, 09:00 AM - 10:00 AM, Gutenberg III
When we are writing a test in which we cannot (or chose not to) use a real dependency, we can replace it with a Test Double. PHPUnit supports the automatic generation of stubs and mocks for this. Alternative mock object libraries such as Mockery and Phake promise to be more powerful yet to be easier to use. This session compares the various mock object implementations for PHP that are available.
Security by Design
Arne Blankerts, 2010-10-13, 10:15 AM - 11:15 AM, Zagreb I
While security is commonly referred to as input/output filtering and about preventing all kinds of attacks from becoming successful, there is a lot more on the non-visual side of web development. This talk will uncover all the small details that may disrupt the users trust in your application. It is about all the things you may forget when developing your application and planning the environment.
XML with PHP: The Hidden Gems
Arne Blankerts & Tobias Schlitt, 2010-10-14, 09:15 AM - 01:00 PM, InterCity 7
XML is ubiquitous in web applications and PHP offers comfortable ways of working with it. But do you really seize all its power? In this workshop, we will dig into the hidden gems of PHP XML processing. Learn to save memory by utilizing XMLReader for stream based XML processing, see the pitfalls and nifty tricks involved with extending the DOM API and integrate custom PHP functions when working with XPath and XSL. Got a specific problem with XML and PHP or specific questions? Want to discuss a specific solution? Come around, we can create some interactive open space! This workshop presumes basic XML and DOM knowledge.
Hand in Hand: Dynamic and Static Testing
Sebastian Bergmann & Manuel Pichler, 2010-10-14, 09:15 AM - 01:00 PM, InterCity 8
Dynamic Testing is used to test software through executing it, for instance by using unit tests. Static Testing is a form of software testing where the software is not actually executed but instead inspected using static code analysis tools, for example. This workshop, presented by the creators of commonly used tools for dynamic and static testing of PHP applications, shows how these two approaches can be utilized during development, in code reviews or for Continuous Integration.
Stefan Priebsch & Kore Nordmann, 2010-10-14, 02:15 PM - 05:45 PM, InterCity 7
Designing models in your application can be hard, and they often end up cluttered and dysfunctional. Active Record, for example, defaced a whole generation of models. This workshop gives an in-depth insight into how business logic can be separated from data access, discussing alternative approaches, like the DataMapper pattern, which allows you to build clean and beautiful models again. We will use real-life examples to show how this not only allows to map your models to different relational databases, but also to document databases like CouchDB or MongoDB.
Stefan, Arne and I are looking forward to see you in Mainz next week!