Tutorials
Building a Zend Framework application
This is an opportunity to sit down with an experienced ZF architect for a hands-on session where we’ll build an application from the ground up. Starting with Zend_Tool, we’ll build a basic MVC application in Zend Framework over the course of the tutorial. Along the way we’ll delve deeper into some of the most powerful areas of the framework with routing, data access, forms and caching all being covered in some depth. By the end of the session you will have seen and used the key framework areas and be ready to apply these skills to your own applications.
PHP Best Practices
Matthew Weier O’Phinney/Lorna Jane Mitchell
Writing maintainable code is an art that takes effort and practice to master.
Part of that art is learning what tools and strategies will assist you in that
effort. In this tutorial, we will cover a variety of practices and tools that
can make your life, and the lives of your team members, easier as you develop
your applications. Among them, we will provide overviews of:
- Version Control
- Coding Standards
- Unit Testing basics
- QA tools: phpcs, phploc, phpmd, continuous integration, and more
- Team Collaboration tools, such as Skype, IRC, issue trackers, and more
JavaScript for PHP Developers
Most PHP developers have at least dabbled with JavaScript – used a jQuery plugin to add tooltips, or maybe a simple AJAX call to pull data from a PHP backend service. As the client side gets heavier and more complex, though, PHP developers would be well-served to delve deeper into JavaScript, and gain an understanding of this increasingly popular language. Thankfully, JavaScript is an interesting, concise language that’s very well suited for front-end development – and other tasks.
In this tutorial sessions, we’ll cover:
- The JavaScript Core language, aka JavaScript is NOT the DOM API
- How JavaScript is NOT PHP
- What you’ll love
- What you’ll miss
- What you’ll hate
- The JavaScript object model, aka Forget Everything You Know about OOP
- Function-oriented development, aka Functions RULE
- Inheritance via prototype
- The malleability of JavaScript
- JavaScript in the browser: The DOM, Event and XMLHTTPRequest APIs (and more)
- Using a framework to make browser-based JS development less than a complete nightmare
- Server-side JavaScript, aka Traitorous Development
PHP Code Review
Sebastian Bergmann / Arne Blankerts
Bad Guy For a Day – A Websecurity hands-on tutorial
Not knowing what attackers do makes writing secure web applications a tough job and learning all the tiny details as well as the important tricks pretty much impossible. This hands-on tutorial will demonstrate how hackers work when attacking a website, giving you first hand information on every day security problems. You will learn how to secure your own website and what else to consider in protecting your environment in general.
Converting Your MySQL App to NoSQL with MongoDB?
- When to use Mongo (and when not to)
- How to get started with Mongo from PHP
- Basic usage – everything you need to run an app on MongoDB
- Getting more out of MongoDB with indexing, MapReduce, geospatial queries, etc.
- How to think non-relationally and migrate your schema to a schemaless database
- Putting it all together in a MongoDB-powered app
Sessions
PHP: Looking to the future
Lots of changes are made within PHP between feature releases but most aren’t made public until the last minute. This session will help decipher and show code examples for all of the new features in the next feature release of PHP.
Continuous Inspection and Integration of PHP Projects
Continuous Integration with automated code analysis and test execution has seen broad adoption in recent years. The ideas behind this have changed how companies look at Build Management, Release Management, Deployment Automation, and Test Orchestration.
This session presents the best practices and available tools that provide an insight into the development progress and code quality throughout the development lifecycle of PHP-based software projects.
Introduction to Testing with Selenium
Large Scale Systems
- reverse proxy caching
- local and cluster-wide object caches
- non-relational persistence engines
- application deployment and systems management tools
- full-text indexing systems
- database replication support
- monitoring
- non-PHP services
Every layer of the stack is expected to be highly available and horizontally scalable. Unsurprisingly, assembling these layers ad-hoc is a recipe for incompatibility, application integration complexity, high management overhead, and redundancy. This presentation will outline a “golden” application stack (using the best free, open-source solutions from May 2010) that efficiently provides these facilities to PHP applications with reliable real-world performance and proven PHP application integration strategies that developers will love.
Best and Worst Practices Building Rich Internet Applications (RIAs)
Replication with MySQL
Lean Mean PHP Machine
PHP Inside
can only be used for web applications. This presentation will show you how PHP
can be used on embedded devices—running on Linux. I will cover some basics for
GUI design (with PHP-GTK), but also cover issues that come along when you have
to take care of low-memory, low-bandwidth situations as well as restrictions
with input methods. In those cases solutions need to be picked to make the whole experience on embedded devices usable.
Models for Hierarchical Data with SQL and PHP
Tree-like data relationships are common, but working with trees in SQL usually requires awkward recursive queries. This talk describes alternative solutions in SQL, including:
- Adjacency List.
- Path Enumeration.
- Nested Sets.
- Closure Table.
Code examples will show using these designs in PHP, and offer guidelines for choosing one design over another.
Desktop Apps with PHP and Titanium
The Web is a vital part of our daily lives, and as we begin using the Web for tasks traditionally performed on the desktop, such as word processing, software as a service (SaaS) and software + services models are becoming more important. Web developers are caught in the cross hairs of these merging industries. They have the know-how of web development but, often, none of the skills for traditional desktop or mobile development.
Enter Titanium. Appcelerator Titanium is an open source platform for developing native desktop and mobile applications using the web technologies you’re already familiar with. Now, web developers can use their skills to develop for both the Web and desktop/mobile platforms. Ben Ramsey will demonstrate how to create a simple application in Titanium Desktop, showing examples using JavaScript and PHP working together in the Titanium run time environment to power dynamic desktop applications that communicate easily with external web services.
New SPL Features in PHP 5.3
Apache Cookbook
While managing your Apache server may not be your primary job responsibility, you need to know your way around your Apache server in order to do your job. In this talk, you’ll learn how to do, or do better, a variety of things that come up every day in the life of an Apache server administrator, as well as learning about some of the less well-know features that maybe you weren’t aware of at all.
Rich is the author of ‘Apache Cookbook’, from O’Reilly, and spends an inordinate amount of time answering Apache questions on IRC.
Anti-spam and anti-gaming
Drawing on experiences of running large websites and blogs, this
session will discuss numerous tactics that you can use to keep spammers
and gamers at bay. Removing comment spam, stopping people from
artificially inflating the rank of items on voting sites, and so on will
be discussed. Some specific technologies and how to interface with them
will be mentioned, but also generic discussions of base theory, that you
can use to apply to your own website where you see fit.
Code & Release Management
Programmers seem to have a fairly good grasp on ‘how to write code’,
but not always what to do with it once it’s been written. This talk
with delve into details about how to manage your codebase, and how to
manage releases (often intertwined). It will cover topics of coding
standards and focus heavily on how you choose to use versioning tools to
handle your development and release processes. It will have a distinct
Subversion(SVN) flavor to the talk, but the concepts will not be
specific to SVN.
Domain NoSQL: Next Generation Play-Doh
Until recently, Relational Databases have been the rage… but now there’s a new
kid on the block: the NoSQL database. NoSQL databases turn the conventions we’ve
all learned on their heads: data normalization, pivot tables, schemas, and more.
Instead of storing metadata and relations across tables, we can create custom
schemas per record — offering incredible flexibility and reducing the number of
queries required to get at exactly the information we need.
In this talk, we’ll look at some of the advantages and disadvantages of NoSQL
databases, as well as some examples of applications that could benefit from the
new paradigms they offer.
Graphs, Edges & Nodes: Untangling the Social Web
Many of the most popular web applications today deal with highly organized and structured data that represent entities, and the relationships between these entities. LinkedIn can tell you how many degrees of separation there are between yourself and the CEO of Samsung, Facebook can figure out people that you might already know, Digg can recommend article submissions that you might like, and LastFM suggests music based on your current listening habits.
We’ll take a look at the basic theory behind how some of these features can be implemented (no computer science degree required!), and then dig in to a few practical implementations using an PHP & and a relational database, as well as with a document oriented database (Riak through PHP bindings). Lastly, we’ll take a quick look at the current landscape of graph-based datastores that simplify many of these operations.
Building Real-Time Applications with XMPP
“Are we there yet?” “Are we there yet?” “How ’bout now?” Ever go on a trip where someone is impatient and continues to badger those around them with questions about how quickly we’re arriving? It’s annoying, yet this is how most modern web applications work! Stop the insanity and learn how you can use XMPP (eXtensible Messaging and Presence Protocol), one of they key components of Google Wave, in your applications today.
MySQL 5.5 and Scalability
Psst. Have you heard about MySQL 5.5 yet? Are you hitting CPU bottlenecks, InnoDB locking and memory management issues or scalability issues with MySQL 5.1? Maybe you need to take a look at what is coming with 5.5 and all it can give you…
Getting Git
Git is hard; at least if you listen to the naysayers. Actually, you need to know a handful of commands to navigate Git successfully. This talk demystifies Git. Once we’re finished you’ll know everything you need to start using Git in your day-to-day projects and collaboratively with other developers.
The Art of Message Queues
Message queuing is an art of handling background and/or asynchronous processing. Most processes can be off loaded to the background for processing. This presentation goes through why message queues are needed, what they help to solve, available software and several demos / code samples. Just think, your boss comes over to you and asks you to support video processing, how are you going to handle it? Message queues are a great way to handle this.
Design Patterns
You may have heard of Design Patterns: time tested methods of solving common problems. You may not understand how these apply in PHP to common web development applications. Jason Sweat, author of PHP Architech’s Guide to PHP Design Patterns, walks you through several of the most useful design patterns for web development.
Agile in a waterfall world
Enterprise is an often abused term in our industry. In the case of development methodologies, it is nearly synonymous with the Waterfall Model of software development. The “blogosphere” is a buzz with the virtues of Agile Development, but what can you do to incorporate this methodology in the face of the high ceremony Waterfall development cycle proscribed by your Megacorp? This talk will not provide all the answers, but it does explore the authors experiences inside of two large organizations.
Advanced Date/Time handling with PHP
PHP 5.2 and PHP 5.3 introduce new powerful date and time handling functionality. This new functionality allows you to deal with many issues that arise when you are developing a web applications.
This talk will cover the advanced new functionality only, and will not provide an introduction into PHP’s Date/Time support except for where this is necessary to follow the talk. Examples of things that are covered are dealing with timezones, modifying Date/Time objects’ contents as well as tips and tricks for dealing with storage issues around date and time information.
XDebug
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 with different IDEs, where you can: set breakpoints on
functions, methods and file/line combinations 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.
Working with Zend_Form
Zend_Form is a powerful component than can simplify form handling within your web application. Find out in this session how to make Zend_Form render and validate your form elements and ease the pain of forms on web pages.
We will look at configuration, data filters & validation and error handling. One particularly tricky area is the use of the decorator pattern to control the generated HTML when rendering the form. This session will therefore also take a detailed look at this especially powerful functionality and show how to ensure that your forms are rendered as desired.
A Web Application Framework for People who Hate Frameworks – Lithium
All web application frameworks suck.
Some are too complex for the task at hand, and others don’t offer enough flexibility when your application steps outside of the confines of the ubiquitous blog tutorial. As stated by the venerable Sean Coates: “the #1 reason to avoid frameworks: you’ll spend all your time working around edge cases.”
Lithium, a new PHP 5.3+ rapid application development framework started by several CakePHP core alumnus tired of the status quo, is designed to help you get the job done, and get out of your way. Built from the ground-up to cater to people who hate frameworks, it attempts to reduce edge cases, and expose an intelligent public interface that sucks less.
We’ll take a jolly jaunt through the internals of Lithium and examine how we’re leveraging closures, late static binding and anonymous functions made available in PHP 5.3 to write a framework that Sucks Less, including our one-of-a-kind aspect-oriented inspired filter architecture, adapter-based architecture, and first-class support for non-relational datastores such as MongoDB and CouchDB.
Put Down the Superglobals! Secure PHP Development with Inspekt
Inspekt is a comprehensive input filtering and validation library for PHP. With a focus on simplicity, Inspekt makes writing secure web applications in PHP faster and easier.
Attendees of this talk will learn:
- The Inspekt approach to filtering and validating user input, including the “input cage” concept
- How to ensuring secure code throughout the development process
- How to integrate Inspekt with existing applications
- How Inspekt integrates with popular frameworks like CodeIgniter
Streams, Sockets and Filters – Oh My!
Some of the most powerful features of PHP are the most underused. SPL, XML handling, and of course, streams. But what are PHP streams and how can you use (and abuse) them? This is an in depth look at PHP’s streams layer.
Learn about built in PHP stream transports and how to use them (yes, you can do an http request with no curl). See how filters can make a templating system fast and efficient. Take a quick look at how to manipulate sockets and create your own socket server, without an additional extension. Finally learn to create your own stream wrappers and filters, and how to use them.
Cross Platform PHP
Whether you’re coding for apache, IIS, OSX, windows, or some exotic operating system and webserver combination usually your PHP code “just works”. But sometimes there are interoperability issues.
Learn some quick rules for installing PHP on different types of operating systems and some basic information about platform differences. Learn how to avoid vendor lock-in with your PHP code by discovering where the trouble areas are and how to avoid them. From cell phones to pdas to desktops, PHP can run anywhere you can compile it, so learn to make your code as flexible and easy to use.
SQL Injection Myths and Fallacies
The most massive crime of identity theft in history was perpetrated in 2007 by exploiting an SQL Injection vulnerability. This issue is one of the most common and most serious threats to web application security. Many articles describe methods of defense, but even the advice from security experts seldom tells the whole story. In this presentation, you’ll see some myths busted, you’ll get a better understanding of SQL Injection, and you’ll learn simple and effective techniques to combat it.
Open Source Your Career
With words like community bandied about, what can the individual gain in professional terms from getting involved in extra-curricular activities? Come and hear tales from someone who has almost accidentally benefitted from her community activities about what drives her to get involved and how this has crossed over into her day job. Everyone will take home from this session some new ideas about how giving can actually be receiving, and strategies for situations where everyone wins.
Subversion in a Distributed World
Feeling left behind because you still use subversion? In a world where everyone seems to be shouting “git!”, this session makes the case for continued use of traditional source control in organisations. With a hype-free analysis of the features in the various distributed version control systems and a look at the tools currently available, we’ll also look at how both traditional and distributed solutions meet the business requirements of today and talk about how we can take advantage of them within our existing development setups. Finally, we’ll look at what might influence our decision to move commercial infrastructure away from the traditional subversion repository towards distributed solutions, or not.
Caching with Memcached and APC
Today’s high-traffic web sites must implement performance-boosting measures that reduce data processing and reduce load on the database, while increasing the speed of content delivery. One such method is the use of a cache to temporarily store whole pages, database recordsets, large objects, and sessions. While many caching mechanisms exist, memcached provides one of the fastest and easiest-to-use caching servers. Coupling memcached with the alternative PHP cache (APC) can greatly improve performance by reducing data processing time. In this talk, Ben Ramsey covers memcached and the pecl/memcached and pecl/apc extensions for PHP, exploring caching strategies, a variety of configuration options to fine-tune your caching solution, and discusses when it may be appropriate to use memcached vs. APC to cache objects or data.
MongoDB for Mobile Applications
Measuring Your Code
Data Visualization: Turning Numbers into Stories
HiPHoP for PHP
Tips & Tricks to get the most of PHP with IIS, and the Windows Azure Cloud
Sumit Chawla & Kanwaljeet Singla

