Behat is a behaviour driven development framework for PHP. It can be used to write integration and acceptance tests in a language that non developers can understand. In addition to being a robust and useful testing tool it can help to make the development process more transparent to non developers and other stakeholders.
The workshop gives attendees an introduction to behaviour driven development (BDD) and goes on to show how to use Behat to accomplish BDD's goals. The workshop covers writing tests with Gherkin (the human readable test description language), implementing steps (the executable element to the test written in PHP), testing API's using Behat and testing UI's using Mink: Behat's UI testing toolkit.
At the beginning of the session attendees are provided a virtual machine with Behat installed and a small test application based around the DPC conference. Tests will be written for the existing code to showcase Behats features. Later attendees will follow true BDD best practise, defining behaviour first, writing tests and then developing the next simple piece of functionality.
In addition to the practical work some case studies of 'Behat in the Wild' are shown and some supporting open source projects are demo'ed. At the end of the session attendees should be able to go away and start using Behat in their own projects.
Note: Attendees should bring a laptop with Oracle's Virtual Box installed. https://www.virtualbox.org/
Agile Applications with ExtJS and Zend Framework
Thursday 09:30, track4 Talk level: Beginner Talk type: OverviewExtJS is an enterprise-level Javascript framework, the Zend Framework is one of the most powerful and flexible PHP frameworks to date - its a match made in heaven. I'll introduce you to these two technologies and how to combine them into an easy to maintain, agile application that can move as fast as your project needs. I'll show you how to build a sample application including a frontend MVC, REST backend and unit testing the result.
Cooking up a Virtual Development Environment
Thursday 09:30, track6 Talk level: Expert Talk type: Hands on
In this technical tutorial we will cover the use Vagrant & Chef to script and automate the setup of server Virtual development environments tailored to PHP.
We will begin by investigating the problems associated with differing environments within a development team when working with PHP and LAMP stacks, explaining how differing software stacks can lead to unexpected defects. Most notably introducing risk to our projects during deployment based on environment differences.
Based on example lead steps, delegates will build a virtual environment using a scripted Chef recipe. Over the course of the tutorial delegates will build a local virtual server with a full LAMP stack and their preferred development tools such as PHPUnit, PHPCode_Sniffer and PHPSpec. They will create a shared file system between the virtual server and their laptop to allow them to continue to use their editor of choice.
By the end of the tutorial delegates will have created a fully automated process for creating a repeatable and distributable virtual environment. They will then be able to apply these practices within their own development teams to streamline the creation of a unified environment for their software projects.
Creating Re-usable Modules for Zend Framework 2
Thursday 09:30, track5 Talk level: Intermediate Talk type: Hands on
Zend Framework 2.0 introduces a completely re-written MVC layer, with an emphasis on creating re-usable, single-purpose modules. In this tutorial, we'll look at:
* how the framework consumes modules
* how to write code and tests for a module, including writing and testing controllers
* where and how to provide view scripts and/or templates
* how to write configuration both for re-use as well as to allow end-users to override settings
* how to hook into the application work flow
* how to provide public assets (CSS, JS, etc) via your module
* how to incorporate modules in your application, both via third-parties and via custom, application-specific modules
* how to extend modules in order to customize functionality
The tutorial will use a practical example, providing attendees with time to follow along and build the example, which they can then take with them and re-use in their own applications.
Estimation or, How to Dig your own Grave
Thursday 13:45, track2 Talk level: Beginner Talk type: OverviewClients need to know how much a project will cost. Waterfall development is always late and over-budget. Agile development is done when it's done. You're left with estimates that you know are too low and then you squeeze them anyway. It shouldn't be this way. We'll look at how this happens, early warning signs, ways out and ways of avoiding it in the first place.
Getting into FLOW3
Thursday 13:45, track1 Talk level: Intermediate Talk type: In depth
FLOW3 is a web application platform which uses Domain-Driven Design as its major underlying concept. This approach makes FLOW3 easy to learn and at the same time clean and flexible for complex projects. It features namespaces, has an emphasis on clean, object-oriented code and provides a seemless Doctrine 2 integration.
FLOW3 incorporates Dependency Injection in a way which lets you truly enjoy creating a stable and easy-to-test application architecture (no configuration necessary). Being the only Aspect-Oriented Programming capable PHP framework, FLOW3 allows you to cleanly separate cross-cutting concerns like security from your main application logic.
This tutorial takes you through an imaginary project from scratch. During the journey we’ll visit all important areas of the framework.
Learning backbone.js
Thursday 13:45, track4 Talk level: Intermediate Talk type: Overview
This tutorial teaches you the important concepts behind Backbone.js. Backbone.js is a lightweight javascript framework for MVC development.
In the first hour of this tutorial we'll be teaching you the basics and theory behind Backbone.js, and why using Backbone or a similar framework is important to build a maintainable Javascript application.
In the last part we'll switch to the practical side, where we'll all be building a Javascript chat-client. The plan is that on the end of the tutorial, we'll all be able to have a conversation through everybody's custom-made chat client.
PHP in the Dark - shell scripts, daemons & parallel processing
Thursday 13:45, track6 Talk level: Expert Talk type: In depth
PHP in the Dark teaches you the dark secrets of php on the command line.
The first part covers simple shell scripts: how to handle options/arguments and interactive input, output, but also how to layout them with helper classes and libraries such as ncursus.
Next we'll discuss how to properly create daemons, handle signals, avoid zombies and use angel scripts.
In the third part we'll talk about parallel processing in php: concurrent processes, running in the background, that enable you to perform a series of tasks. We'll see how to initiate them, how to do inter-process communication using a number of techniques, how to monitor them and what things could go wrong.
Finally we'll talk about a few distributing strategies/tools to go from concurrent processes on one server, to multiple servers.
The Agile Toolbox 2012 - Practices
Thursday 09:30, track3 Talk level: Intermediate Talk type: Hands on
In 2012 agile development is not new anymore. Seems to be everyone is doing it, everyone has or had experiences with it, with very different outcomes. We will try to emphasize this fact in this years agile workshop at 2012 DPC by sharing experiences, form groups of interest to exchange opinions. Experienced "Agilists" can share what they learned with the people newer to the field of development and the newbies can ask questions to the people who are really working with these methods (and not only consult about them).
Topics:
- Basics of Agile with less Buzzwords explained
- Build your development process as you want it - And not as a Book tells you too.
- Practices from agile Development - User to User conversation
At the end of the workshop, participants should have had a good sneak peek into the real life methods applied in companies and take one or the other idea away to be used in their own development life. The workshop aims to provide a "training" and experimenting ground for all this.
Web Services
Thursday 09:30, track1 Talk level: Intermediate Talk type: Hands onDevelopers and architects alike will love this practical session on web services, at a time where our applications need to reach beyond the browser. We'll look at different kinds of services, and the tools available for these in PHP. There will be a spoonful of HTTP theory, sweetened with some real examples from around the web. We'll also look at different data formats, how to choose between them, and how to handle these using PHP. During the course of this session you'll create and consume your own simple service and get lots of tips for designing services of your own - and for debugging when things go wrong!



