PHP in 2011
A look at the state of PHP in 2011 and how it fits into the current technology stack followed by an overview of what you should and shouldn’t be doing along with a summary of new and upcoming features in PHP 5.3 and PHP 5.4
Profiling PHP Applications
The web is full of useful advice focussed on pushing out the last bit of performance of your code. They mention trivial changes. like changing every occurrence of print with echo even suggesting to use for instead of foreach. These optimisations help, but you are not going to notice it unless they’re in a tight loop with many iterations. It is also a wrong approach for tackling performance issues. Before you can optimise, you need to find out if your code is actually slow; then you need to *understand* the code; and *then* you need to find out where you can optimise it.
This talk introduces tools and concepts to optimise the optimisation of your PHP applications.
This session teaches you how to detect and debug PHP scripts with the free open source tool Xdebug, which is an extension to PHP. The first part will quickly show how to get started with Xdebug. The second part of the session will cover detecting problems in your scripts by showing how Xdebug provides debugging aides in the form of stack/function traces, dumps of variables, modified PHP functions. In the last part I will show the remote debugger capabilities of Xdebug, where you can: set breakpoints on functions, methods and file/line combinations; watch execution details such as stack frames, per-frame information; run PHP code to modify the current state of your script and evaluating error messages. On top of this you will also see how you can use Xdebug’s profiler to find bottlenecks in your applications.
Caching on the edge
Besides obvious optimizations like using APC, you probably have some caching strategy for your PHP projects. Most frameworks nowadays provide tools to cache whole pages or only page fragments, and interfaces to software like Memcache. But did you know that caching is a large part of the HTTP specification (RFC 2616), published more than 10 years ago? It describes very powerful techniques that are mostly unknown to web developers.
Do you know for instance how to use the ‘Cache-Control’ HTTP header? And do you know the pros and cons of the ‘ETag’ and ‘Last-Modified’ HTTP validation headers? In the first part of this session, I will show how you can take advantage of HTTP caching and how to leverage gateway caches.
Akamaï and other companies wrote the ESI language specifications (Edge Side Includes) in 2001 to provide a means to build pages with different HTTP resources. It brings a lot of flexibility to the table. Squid and Varnish, two of the most popular reverse proxies, support ESI out of the box. The second part of this session will show how you can use ESI in your next PHP project.
Dependency Injection in PHP 5.3
Developers are getting more professional every day by using web design patterns to solve common problems. This session will introduce a design patterns that can greatly improve the decoupling and the testability of your code: Dependency Injection. I will demonstrate how to use Dependency Injection, and I will take advantage of the PHP 5.3 new features to create a fully-featured DI container live.
Unit Testing as an Afterthought
Adding unit testing to an existing application is not just a good idea: it’s an easy and productive way to make your development efforts more efficient and fun. In this presentation, Marco will show you how to create a simple testing strategy that takes minutes to get started and brings immediate benefits.
Pre-processing for Perfection
One of the major benefits of PHP is the ability to make changes without compilation, however, this results in numerous if/then checks along with unused code loaded into memory. In this session we’ll show you you can effectively “pre-process” your code allowing for your app to run and load targeted to the end user, all while maintaining code-editing flexibility and the interpreted benefits of PHP.
Session will show how you can code in PHP and implement an interpreted pre-processor to allow for targeting to web users, different browsers, devices, search robots, etc. without impeding your coding workflow or having to create numerous duplicate versions of your application.
How to write a PHP application using cloud computing services?
Basically you have to use the APIs published by vendors and build the software using these specific calls. If, for any reason, you want to change your cloud vendor, you must rewrite your PHP code using the API system of the new vendor. Rewriting a piece of software is always a cost, in terms of time and money. Using the Zend_Cloud class of the Zend Framework project you can write PHP applications that are portables across all major cloud vendors today. The Zend_Cloud is the evolution of the Simple Cloud API, a project of GoGrid, IBM, Microsoft, Nirvanix, and Zend Technologies to unify the access to the cloud services in PHP.
Deployment without the Chaos
Long gone are the good old days of web development: Single developer & server and no problems. Today we have to deal with the deployment challenges of server clusters, distributed development teams and complex code. This session will demonstrate how to harness Zend Studio and Server to easily manage the development of public version controlled projects and their deployment to various environments.
BDD for Zend Framework with PHPSpec
PHPSpec is the first ever PHP Behaviour Driven Development framework. The talk will briefly introduce BDD and jump into the features available in PHPSpec, particularly focusing on the recent additions aimed at facilitating this practice with Zend Framework projects. The talk will cover integrating PHPSpec with Zend Tool to speed up the creation of specs; How can we validate common controllers behaviours like routing, redirecting and request and response manipulation; How can we validate views using selectors or checking the presence of plain content in them; And finally how to approach database testing, covering patterns like Test Data Builder and Object Mother. The talk is particularly useful for those who want to improve on their Testing skills, do better Test Driven Development or for those who already do BDD but are not sure how it can be applied to a PHP MVC project..
It’s fun to architect your application to handle millions of pageviews, but in reality that’s time where you could be adding features. We’ll examine some practical solutions for designing your platform to deal with increasing traffic and how to add those features on an incremental basis. This will take us through options for scaling the code and additional methods for scaling the infrastructure.
PHP in the Cloud
Cloud is a big buzzword, but it actually means something. Do you know what? Come and see for yourself. Let’s discuss what cloud really means and how it applies to PHP applications, how to write and deploy cloud-ready websites.
Doctrine is an enterprise object persistence layer for PHP 5.3.2+ that supports persisting PHP objects to relational databases like MySQL, Oracle, etc. and document based storage systems like MongoDB as well. Dive in head first and learn the Doctrine way in this workshop. From basics to best practices, performance optimization and legacy applications migration.
One click deployment with Jenkins
Facebook does it, Flickr does it, maybe you want to do it to? Nowadays we’re using agile software development methods and we want to deploy our software more than one time per month. The talk will show a real life solution how to implement a one click deployment for PHP applications.
The Pomodoro Technique
The Pomodoro Technique is an XP time management tool and we’ll see how to work with it as freelancers and in a team. The technique is not only related to programming, but was invented by a programmer: it’s based on timeboxing on periods of 25 minutes called Pomodoros (tomatoes) from the shape of the original kitchen timer used for measuring them.
The main goals of the technique are:
– managing interruptions, often a tough task for a programmer to do while his boss and colleagues have the need to communicate with him continuously.
– Defining goals for the day and for short period of times, which would otherwise go wasted in checking email.
– Maintaining focus throughout the whole work day: it’s not easy to stay really productive for 6-8 hours.
– Estimating tasks and actually getting better at estimation over time: Pomodoros become the unit of measurement.
The format is divided into three parts, which follow the introduction to the rules of the technique:
– the reasons behind the rules and their meaning: when it’s ok to cheat and when it’s absolutely not.
– a few frequently asked questions about the technique and the points that seem strange to the layman.
– some tricks on how to check you’re on the right track, or about the difference between working solo or in a team with Pomodoros.
The purpose of the talk is to raise awareness about time management and to introduce the technique as one of the tools you can use in this field. The technique adapts well to Agile environments and also revives XP and Scrum concepts on a smaller scale.
CLI, the other SAPI
Most developers use PHP in a web context and run their code via Apache. The command line interface (CLI) is another approach to run PHP without the overhead of your webserver.This talk not only illustrates the usage of the PHP binary, but also some use cases for which the CLI is the better tool. Keywords: I/O, forking, signals, configuration, batch tasks, syntax validation, documentation, piping…
DevOps for PHP
Now that even big platforms like flickr or facebook have shown how continuous development can result in continuous production, DevOps gets interesting even for small LAMP projects. This talk shows how you can streamline your development, staging and production environments, how to keep everything changing and stable at the same time, and how to use the cloud for your company.
NetBeans IDE – The choice for PHP development
It was three years ago that NetBeans 6.5 first introduced a new distribution designed specifically for PHP developers. Since then, NetBeans IDE, the integrated development environment, has enjoyed more and more popularity in the PHP community. In this session, we will cover the features that simplify everyday tasks, show capabilities that speed up the development of PHP web applications, and focus on new functionality arriving with NetBeans IDE 7.x. You will see new editor features, improvements in PHP Unit testing, debugging, CSS support and more.
Think like an ant, distribute the workload
Many services / applications now a day are ill equipped with handling a sudden rush of popularity, as is often the case on the internet now a days, to a point where the services either become unavailable or unbearably slow.
By taking a chapter from the ant colonies in the wild, where their strength lies in their numbers and the fact that everyone works together towards the same goal, we can apply the same principle to our
service by using systems such as:
– message queues
– load balancers
and many more, you can achieve greater performance, more redundancy, higher availability and have the ability to scale your services up and down as required easily.
During this talk attendees will be lead through the world of distributed systems and scalability, and shown the how, where and what, of how to take the average application and splitting it into smaller more manageable pieces.
Build your own PHP search applications with Apache Solr
This workshop gives an overview of the Apache Solr search and general information retrieval server. Besides its features, some important elements to configure and tune it towards specific application needs are addressed as well.
Apache Solr is a state of the art, high performance and scalable RESTful search and information retrieval engine you can use or embed in your PHP application to provide a very feature rich search experience. Besides full-text search, it also provides spell checking, highlighting, facets and powerful functions that can put it in the realm of a general information retrieval engine. You can also use Solr for replacing complex SQL database queries to reduce database load.
Given its document oriented storage paradigm of arbitrary fields per entity, it effectively belongs to the realm of NoSQL storage and retrieval systems (and is used as such in high profile, large scale web applications)
Application use cases range from e-commerce, real-estate database search, intranets/extranets, content management systems, document management systems and anything that offers exploration of structured and/or unstructured information. The recent addition of geo-aware features makes even location based queries possible.
Furthermore, easy to use clustering/cloud aware features make Apache Solr suited for serving very large data sets (several billions of documents/objects).
While Solr is very flexible and powerful, some careful configuration and tuning is required to let it function optimally for your needs. Tips and tricks in the areas of data modeling, analysis steps, multilingual aspects and performance are given as well.
Acceptance and Integration Testing With Behat
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. Behat is capable of testing the response from API calls, driving a web browser with Selenium or Mink and even testing output from PHP scripts. It isn’t a replacement to unit testing, but the logical next step to ensure your code plays well with others.
This workshop gives attendees a practical introduction to Behat and behaviour driven development. A fictitious conference website is offered as a practise domain.
Attendees will define the behaviour of a simple feature using Gherkin (Behats test description language), write a Behat test for it, watch it fail and then implement the functionality in order to get the test to pass.
The workshop goes on to cover Behats more advanced features like it’s support for testing In the browser and it’s ability to test API’s over HTTP.
Finally the various methods of reporting Behats output are covered including it’s console reporter and using it in a continuous integration setting.
By the end of the workshop attendees should have the tools they need to start using Behat for acceptance and integration testing in the real world!
Prerequisites: Attendees should install behat (using pear or Github) before the start of the session.
Test Driven Development with Symfony 2
Symfony 2 is the new wave in the PHP ecosystem, while TDD adoption grows steadily. This session brings the two together and shows test driven development for real, in a live coding session as if it was in a day-by-day activity.
TDD is a technique to approach software design bottom up along with zero regression. You write a test, you write the code to make it pass and then you refactor the code.
Symfony 2 as a very clean Object Oriented attitude and developing with a TDD style becomes easier if not possible at all.
The session shows how to develop an application based on a DB and a web service with the help of a test driven design methodology. During the live coding session I write code from scratch to get a working app within an hour, fully tested and well designed.
Creating Mobile Applications with PHP and Symfony2
Session in Spanish
In this talk we will look at some of the reasons on why mobile applications are important, including some history on the mobile market. Then we will look at some frameworks that help develop high-quality mobile apps and we will showcase a mobile app developed with PHP and Symfony2, including the source code which will be available on Github.
Experiencias moviendo un sitio al cloud
Session in Spanish
Mario Cortés Flores
Durante esta sesión repasaremos la experiencia y prácticas recomendadas a la hora de configurar y desplegar una aplicación para subirla a un plataforma como servicio. Veremos detalles técnicos de cómo se planteó la migración de un conocido portal web de WordPress en un hoster a Worpress sobre Azure.
Session in Spanish
Dar a conocer el framework hispano más usado. Se mostraran los patrones que usa. Sus ventajas y su rendimiento.
Framework PHP5 completamente en castellano con licencia new BSD. Más de 1.500 programadores en el grupo (http://groups.google.com/group/kumbia/). Comunidad hispana al 100% Se usa en universidades: Peru, Colombia, Venezuela, …
Hacks and Avanced Features in PHP 5.3
Session in Spanish
Ángel Luis Quesada Nieto
PHP es un lenguaje común de uso extendido entre programadores, muchos de nosotros empezamos a usarlo a base de copiar ideas de otros programadores y poco a poco hemos ido aceptando errores típicos como conceptos comunes. En esta charla intentaremos modificar malos hábitos en scripts básicos y dar al desarrollador nuevas formas de optimizar su código aprovechando las funcionalidades menos usadas de PHP y enseñando pequeños hacks para su uso diario.
Session in Spanish
Mejora de la productividad a través del entusiasmo
En la películas americanas sobre deportes, el día de la final, el entrenador no da instrucciones, sólo dice: “Salid y divertíos”. El trabajo deja de ser tal para convertirse en algo más. En esta charla, vamos a ver métodos para conseguir equipos de desarrollo más implicados y motivados, en consecuencia, más productivos a través de sencillas dinámicas, iniciativas y del cuidado de ciertos aspectos del ciclo de desarrollo. Si creéis que podéis convertir vuestra empresa en un lugar mejor para trabajar, empezando por vuestro propio equipo, ésta es vuestra charla.