This is a list of the talks I’ve given and associated links to where approriate and slides if they are available.

Secure your web application with two-factor authentication

Protecting your users' data with just a username and password is no longer satisfactory. Two-factor authentication (2FA) is the primary method of countering the effects of stolen passwords and is easy to implement in your web application. In this session we will discuss what two-factor authentication is, how it works and the challenges associated with it. We will then look how to integrate two-factor authentication into your PHP application's login workflow. We'll consider both YubiKey and Google Authenticator implementations, so you can make your users' accounts more secure.

Building an API with Slim 3

Slim 3 builds on the PSR-7 HTTP message interfaces and provides useful features such as routing, and a DI container. It's very lightweight and so is an ideal platform for building an API. In this talk, we look at how to use Slim 3 as the basis for your API.

A first look at ZF3

Zend Framework 3 is the framework that took the opportunity to learn from the previous 4 years of ZF2 and be even better than that! Today's PHP projects are built of components installed via Composer and ZF3's architecture reflects this approach; its core components have also been greatly improved in both usage and performance from older versions of the framework. If you're already running a ZF2 application, you'll be able to upgrade your existing application and there will be some excellent support for doing so – we love it when developers get to use new things. If you're a PHP developer with an interest in building excellent, modern applications, then this session is for you.

Two things about PSR-7

A lightning talk about PSR-7 where I cover the two things that I think that you need to know about PSR-7.

  • PHPNW user group, August '15: Slides

Introducing Dependency Injection

The Dependency Injection pattern separates the creation of objects and their dependencies and is used in many popular frameworks including Zend Framework, Symfony, Laravel & Silex. This session will look at what Dependency Injection is, why you should use it and the benefits it provides. We will also look at how to use a Dependency Injection Container to improve decoupling and make your projects easier to test and maintain.

Getting started with Slim 3

Slim is a PHP micro framework that enables you to write powerful web applications and APIs. In this talk, I will give an overview of the upcoming version 3 of framework and show how you can easily write maintainable applications with it.

We will look at how Slim's middleware system leverages the new PSR-7 HTTP request and response definitions to create easily understandable and flexible applications. We will cover application setup, routing and the relationship between actions and middleware. By the end of the session, you will be equipped to create Slim applications yourself.

A Slim 3 primer

Slim is a PHP micro framework that enables you to write powerful web applications and APIs. In this talk, I will give an overview of the upcoming third version of framework and show how you can easily write maintainable applications with it.

Creating models

How are you supposed to organise your models in an MVC application? What goes where? What is a service class, a mapper or an entity? This talk will look at the components of the model layer and the options you have when creating your models. We’ll look at the different schools of thought in this area and compare and contrast their strengths and weaknesses with an eye to flexibility and testability.

We'll discuss the terminology and also take a look at what a service layer is and see how you use service classes to provide the business logic for your application and hide your persistence code from your controllers. By the end of this session you will be equipped to create excellent, maintainable models in your projects.

Introduction to Apigility

Apigility is a project that allows you to easily create a web service without having to worry about the nitty-gritty details. Which details? Well, Apigility will handle content negotiation, error handling, versioning and authentication for you, allowing you to concentrate on your application.

In this introductory talk we look at what Apigility is and how to create a simple REST API that allows us to view a list of music albums, showing how to start using Apigility and how to publish an API using this tool.

Introduction to ZF2

Zend Framework 2 has matured nicely over the last 6 months, so this talk looked at how it works! In this talk, I walked through the structure of a ZF 2 application. I covered configuration, service location, modules, events, and the MVC system to provide a clear introduction to the key elements of a Zend Framework 2 application.

  • PHP Conference Argentina Nov '14: Slides
  • De Montfort University Nov '13: Slides
  • NomadPHP May '13: Slides

Dependency Injection in ZF2

The Dependency Injection pattern separates the creation of objects and their dependencies. This session will look at what Dependency Injection is, how it is integral to Zend Framework 2 and the benefits that it brings. We’ll then look at how Zend\ ServiceManager works and how to make best use of it within your application.

Zend Framework 2 Certification Launchpad

Give yourself a refresher in Zend Framework 2 before taking the certification right here at ZendCon. This tutorial is designed to take developers who are well versed in ZF2 to the point where they are confident in passing the ZFCA exam. This tutorial will refresh your knowledge of some of the more widely used components, but will also cover some edge cases that you may have never used (or forgotten about). I'll also be giving you sample questions along the way, as well as advice on what to expect when you actually sit the exam.

ZF2 tutorial

This half-day tutorial with Evan Coury introduced ZF2's MVC including the foundation concepts of service manager and event manager. We also looked at routing, bootstrapping, controllers and views.

Debugging for beginners

The talk introduced the lifecycle of the debugging processed, covering reproduction of the error, diagnosing the problem, fixing the bug and finally reflecting on how the bug was introduced in the first place. We also looked at ensuring that our PHP environment was set up correctly, how to use var_dump() and xdebug to find and fix problems.

ZF2 tutorial

This half-day tutorial introduced ZF2's MVC including the foundation concepts of service manager and event manager. We also looked at routing, bootstrapping, controllers and views.

Stress-free deployment

This talk looks at automated deployment of new versions of a website. We concentrate on approaches that ensure deploying new code to a live website goes smoothly. I cover organising the source code within a version control system and the mechanics of automatic deployment of a new version to the server. We also look at how we roll back when something goes wrong.

RESTful services made easy with ZF2

This half-day tutorial with Matthew Weier O'Phinney walked through building a RESTful web service using the ZF2 MVC system.We talked about fundamental ZF2 components, such as service manager and event manager and showed how ZF2′s new modular MVC system works. We also showed how the various aspects of REST, including proper use of HTTP methods, the usage of media types, approaches to content negotiation, and hyperlinking can be implemented within a ZF2 application.

Working with ZF2's ZendForm

ZF2 introduced a completely rewritten ZendForm component that can simplify form handling within a web application. This talk looked at how to use ZendForm to render a form, validate data with input filters and ease the pain of forms on web pages.

ZF2 tutorial

This full-day tutorial with Evan Coury covered ZF2 in detail, starting with key foundation concepts of service manager and event manager. We then looked at routing, bootstrapping, controllers, views, modelling and forms.

ZF2 (pre-release) tutorial

This all-day tutorial covered the state of ZF2, key foundation concepts including the autoloader, event manager and dependency injector. We then looked at an actual ZF2 application built with the prototype MVC system.

Getting a website out of the door

This talk covers project management tips and tricks that will help get a website developed, approved and live. We look at the documentation, meetings and processes required to deliver a successful website with an emphasis on ensuring that the PM effort matches the job in hand. We also consider how to handle the client’s change requests when they arrive.

Optimising a Zend Framework Application

This talk looks at some strategies to improve the performance of a Zend Framework application. We look at measuring the performance of a website and then provide some ideas on how to improve the performance.

We look at class loading, before walking through Zend_Db's performance and then cast our eyes over the view to improve performance there. We also look at the caching that you can do to improve your application's performance.

Zend Framework: Next Steps

This tutorial looks at some of the next steps that you could take with Zend Framework. We look at how to use plugins and helpers within the dispatch cycle and options on how to organise your model before turning to authentication and access control. We also take a look at the layout specific view helpers and how to add caching to your application.

Zend framework 2.0: What’s New And What’s Changed?

This talk looks at the goals of ZF2 along with what’s new and what’s different with ZF2 compared to ZF1. We look at the new ways that components are referenced now that namespaces exist along with a look at the new features of individual components that make development easier, with code samples to explain how to do it the new way.

This talk was given at PHPNW '10 with the title of .

Authentication and Access Control in ZF

This talk introduces Zend_Auth and Zend_ACL. It looks at how the Zend_Auth component can be used to provide login to a website and then how the Zend_Acl component is used to limit which pages a user can access, using lots of code samples.

Working with Zend_Form

This presentation is an introduction to Zend Form, looking at how to use it, especially using decorators.

Zend Framework Application Patterns

This all-day tutorial with Matthew Weier O'Phinney looks at a number of Zend Framework components and development strategies that improve every aspect of application lifecycle. Starting with custom Zend_Application resources and bootstrapping techniques for better initialisation, we then look at routing web services using the Zend_Rest components. Whilst looking at domain models, we consider the proper usage of Zend_Form in relation to filtering data, as well as how Zend_Paginator can be used as a generalised data type for model data used in views. Placeholder view helpers, coupled with Zend_Layout and the ContextSwitch action helper, are looked at in detail to provide a rich view system. Finally, we also be covered application-wide concepts such as caching and testing.

Building a Zend Framework application

This presentation is an introduction to Zend Framework. The slides cover more than that I got through in the talk!

Cloud computing with PHP on Windows Azure

This presentation is an introduction to the Windows Azure cloud computing platform and covers the basics of how one can develop a PHP application that can be deployed to Windows Azure, using the Eclipse tools for Windows Azure and the Windows Azure SDK for PHP

Caching for performance

This presentation is an introduction to caching techniques that can be used in a PHP project to increase performance. We look at a variety of caching techniques, showing practical implementations and before and after statistics. Cache storage options available and when you might use one over another will be covered and we also address how to get browsers to cache content for us.

Zend Framework Certification Refresher

This tutorial is designed for programmers who are well rooted in Zend Framework, and who feel prepared to take the Certification Exam. A 3 hour refresher intended to help you study for taking the exam, and covers the less well known features of the framework you may not have previously thought about.

First steps with Zend Framework

This presentation discusses Zend Framework’s capabilities and what it has to offer the developer. We explore Zend Framework’s MVC components and look at how they fit together. Finally we build a simple Zend Framework MVC application from scratch so that we can look in detail at the code.

Zend Framework Overview

This session was a 1.5 hour joint session where three of us gave a short 20 minute presentation on three different frameworks and then took questions as a panel. I talked on Zend Framework, Ian Christian talked on Symfony and Toby Beresford talked on Code Igniter.