Tools and services for modern applications

Modern Applications with PHP - Part 2

Posted by on October 23, 2015 Tools and services for modern applications

It’s Friday, and as promised I will post every two weeks an article of my series “Modern Applications with PHP”.

In the previous article a introduced this series and talked about application lifecycles and the benefits of components.

The requirements and types to modern applications are oftern very diffrent. Restful api services, any kind of administration, form handlers, and much more.

For a modern application development process we need to ensure to work together in a team on the same sourcecode base, build, test, deliver changes and fixes as fast as possibile. We also need to ensure a stable and documented sourcecode base.

The development environment

Their are tons of useful tools, services and standards to develop and provide php applications. We want to use still improving and well tested services and tools, like the following.

GIT and Github

It is crucial to use a versioning tool like GIT while development. Their are many advantages. Keeping track of all changes. Working on one sourcecode base with a hole team at the same time. Add new features or fixes without touching the stable sourcecode base with branching.

We want to use the git branching model and semantic versioning by default..

Our sourcecode will be hosted on GitHub. We will be able to get access to many service integrations. Managing teams, projects and as well sourcecode is also smart and easy.

Composer and Bower

Composer is helping to manage our php dependencies to other packages and also delivering a smart commond bus to define convinience commands for e.g. testing. Furthermore we will use composer to provide autoloading out of the box.

Bower is a similar tool to composer but specialized in managing dependencies for JS (Client-side and NPM) and CSS. Therefore Bower will be our tool provide all client-side packages and as well all tools to automate building, preprocessing which is more comfortable with npm and JS.

Vagrant

Our development environment won’t be our own os environment. We also need to keep in mind that our team members could have a diffrent environment configuration. Therefore we will use Vagrant, a smart virtualizing tool. We also want use the well-known dev LAMP stack Scotch box as our development environment.

Travis CI and Coveralls

Continious integration with Travis CI is ensuring automated testing and building on each push and will raise our quality. Other developers also informed quickly when a build is not passing an integration.

Coveralls is storing all test coverage history and statistics from travis ci.

PHPUnit

All our sourcecode needs to be tested. We are not able to ensure a correct functionality of our application without any tests. Therefore we are using PHPUnit 4.8

PHP Code Sniffer (phpcs), editorconfig.org and PHP-FIG PSR-2

PHP Code sniffer is checking our sourcecode against the PSR-2 standard, defined by PHP-FIG.

Editorconfig is using one file to specify your editorconfig. This is usefull, to work in teams and ensure the same config for the hole team. Editorconfig is providing a plugin for all known IDE’s like NetBeans, SublimeText, VIM, PhpStorm, textmate and many more.

What’s next?

In the next post I will show you how to setup the project foundation, with all tools and services mentioned above. We will also create our first class, test it build it and will explore the magic CI process. Feel free to ask questions! I would also be happy if you share this post.

Roadmap

  • Initializing our dev environment*
  • A basic web application with basic routing and hello world
  • A basic CLI wrapper
  • Database connector
  • Custom views
  • Introducing MVC with the basic Blog-Example
  • a CLI-Interface to manage our blog
  • to be continued…

*in progress