Introduction

Obsolete page

This page requires updating for UserFrosting 6. You can help by contributing on GitHub.

Motivation

The PHP community has evolved considerably over the past decade, beginning with PHP5's support for object-oriented programming in 2006, to the first meetings of PHP-FIG to develop a set of standards for PHP code, to the release of Composer as the de facto package manager in 2012. At the same time the web development community as a whole has been changing, with websites becoming more dependent on Javascript and CSS to provide sophisticated client-side features. And Javascript has moved even faster!

This breakneck pace has caused a lot of people to get left behind. For someone who hasn't been doing web development continuously for the past ten years, it can feel like a hopeless task to try and get acquainted with all of the new tools and frameworks that seem to be coming out every day. Relevant comic from Abstruse Goose:

BlooP and FlooP and GlooP

The problem is that when you're a busy developer with a lot of Real-Life (tm) projects to work on, it's very difficult to set aside time to read a book about technology X - especially when you're not even sure that you really need to learn X!

UserFrosting has a better idea. Instead of learning about these technologies as a purely academic exercise, you'll work on one of your projects, and learn what you need as you go!

What exactly will I learn?

There are three main categories that UserFrosting attempts to cover: software architecture, tools of the trade, and best practices. Most of the PHP developers we see in chat or on Stack Overflow are behind in at least one these areas:

Software architecture

  • Object-oriented programming and SOLID
  • The model-view-controller (MVC) paradigm
  • Designing for maintainability and reuse
  • Representational State Transfer (REST)
  • Security

Tools of the trade

  • Frameworks
  • Version control (Git)
  • Package management (Composer)
  • Templating engines (Twig)
  • Data modeling and database abstraction (Eloquent)
  • Logging
  • Markdown

Best practices

  • Coding style and standards
  • Development environments
  • Debugging
  • Test-driven development
  • Deployment strategies ("going live")