The 9th PHPNW was held on the 1st and 2nd of October 2016 and I was in attendance with around 400 people. The venue was the Manchester Conference Centre, which is where the event has been for the past few years. It's a nice place with helpful and friendly staff, lots of rooms, great food and even a good bar. After a quick introduction from the organizers Jeremy Coates and Rick Ogden) and a session from the platinum sponsors UKFast we started the conference proper.
The opening keynote was from Ben Marks, who talked about A World Without PHP. He looked at his own career and he had gone from running a bar into web development basically because of PHP. He talked about some of the big PHP based sites that have had a big impact on the web (like Yahoo, Facebook, Wikipedia and many others) and about how the web would be a different place entirely without these sites, or indeed, PHP. Ben is a contributor to Magento and so he also talked about how the various open source frameworks and communities that have come into being due to PHP have also changed the internet. Today, $50 billion is run through Magento sites alone, so its clear to see the impact on things outside the internet as well as people rely on it for their income. Without PHP the internet might be a different place, but it's important to think about how the PHP community looks to young people and new starters. Ben was a good speaker and his talk had lots of interesting facts, as well as quite a few jokes.
Next up was Getting Hands Dirty With PHP 7, with Michelangelo van Dam. This was a tour of the things that have changed between PHP 5.6 and PHP 7 and what to look out for when upgrading between versions. There were a number of good tips here including new features that might cause unexpected errors for PHP5 applications running PHP7.
After a quick break I went to see Rob Allen talk about Slim: The PHP Micro Framework. Although I use Drupal quite a bit I'm always using micro frameworks to do simple projects that aren't suitable for a large framework like Drupal so seeing how a neat little framework like Slim works under the hood was interesting for me. Rob took us through some of the decisions that had been made during the development of Slim, and how they effect the use of the framework. This was a good introduction to the framework and even though PHPNW was only a couple of weeks ago but I've already adopted Slim for use in a project.
After a fantastically good lunch of fish (where I met a few new people) I went off to see a talk about OWASP Top 10 Proactive Controls 2016, from Katy Anton. This was more than the standard "more security please" talk and actually gave some real world examples on how to solve some of the most prevalent security problems on the internet. What was really interesting was the concept of secondary SQL injection attacks. This is where the injection attack vector doesn't cause an initial problem, but is inserted into the database and causes a problem further down the line. When this value is extracted from the database and used in other parts of the application it can be used as a secondary attack vector. I've not seen this method before, but it shows the importance of sanitizing all inputs, no matter where they come from.
After this I went to see Interface Segregation - The Forgotten I in SOLID, which was given by Dan Ackroyd. This was a really good talk with some excellent code examples and some really good jokes (and not just jokes about beards). I came out of this talk with some lessons in how to setup interfaces and I have already used these principles in some of my work. Dan was able to convey some complex and abstract concepts in a really clear way and show how to use interfaces to make code more reusable and testable.
The last talk of the day was from Derick Rethans and his talk It's All About The Jumps. This was a tour through some of the inner workings of PHP and how the code is tokenized and executed, and how this execution has changed in PHP7. I normally try to attend Derick's talks when he speaks at PHPNW and he was on his usual excellent form going through some quite complex topics and making them look easy.
After the final closing remarks of the day we settled in for food and drink at the Saturday night social. This year the food came in the form of various free vendors with fish and chips, burgers, sweets and candy floss as well as a free bar. This was a really unique way of giving out food and drink to conference delegates and I found everything really fun (not to mention tasty). I spent the evening chatting with a group of developers about the things we had seen that day and what we would be taking back to our work.
The next morning I started the day with Behaviour Driven Development and Behat: Telling Stories Through Code with Matt Brunt. This involved a look at Behat in terms of the user tests and what makes a good test or a bad test. I've seen a few Behat talks in the past couple of years and this was one of the better ones I have seen. One useful technique (that I have in fact been struggling with recently) was the concept of transformations. This is where you enter a category or a product name into the test and this is translated into the correct ID by the feature classes. Something I will definitely be using in future projects.
Stefan Koopmanschap was next, with a talk called Level Up Your Team. This was a brilliant talk that covered many of the human aspects running and training a development team. It was really good to hear that I already cover many of them myself. This started out with training (both formal and informal) as well as different techniques to get the most out of a team of developers. I took several pages of notes from this talk and have been chatting to my team at work about these aspects over the past couple of weeks. Stefan clearly has lots of experience in running a development team and knows how to get the most out of his team.
The penultimate talk of the conference was Decouple Your Framework Now, Thank Me Later with Michelangelo van Dam, his second talk of the conference. This was a higher level talk about how Michelangelo had encountered certain issues when upgrading projects built upon frameworks and how to avoid having such tightly coupled classes in the future. The essential idea is that he created the application logic he needed and then created a bridge between this logic and the fundamental parts of the framework. He demonstrated this with a sample application he created that integrated with Symfony. Michelangelo also talked about a tool called deptrac that can show where the dependencies lie in your codebase.
The final session of the weekend was Using Open Source for Fun and Profit with Gary Hockin. Gary took us through his journey as a developer from his beginnings in Port Talbot working with spreadsheets (and playing games) to being a successful developer as well as an international speaker, contributor and mentor. This was a fascinating, funniny and emotional talk that touched many of the aspects of being a developer I see in myself. A very inspiring and just the perfect upbeat experience for a closing keynote.
I've been going since the first PHPNW in 2008 and have learned a lot and met some really amazing people along the way. I'm certain that going to these conferences has made me a better developer. Being exposed to current technologies and best practices has been hugely beneficial and I'm already looking forward to next years conference.