PHP / LAMP Development Best Practices
Open source has its advantages as well as challenges free more often than not means you are the master of your own destiny, technologically-speaking. Be that as it may, solutions are often within reach and well-documented by the developer community. The following are some guidelines, methods and techniques to develop a sound web application deployment with PHP/LAMP.
Though volumes exist on hardening your LAMP stack for security on all levels, the lowest common denominator is staying in-line with the latest updates. This will result in better performance, the newest features, and security updates out-of-the-gate. Installing/configuring a firewall and hardening your linux operating system may require the assistance of a more experienced administrator, but will prove a worthy endeavor in the long run. Apache, PHP, and MySQL configuration directives can be tweaked with relative ease, and should be modified accordingly. If your web application will be transmitting sensitive data, installing SSL and acquiring a proper certificate is a must.
Environments and Version Control
Implementations vary by organization, but the general concept is that for release management purposes, your web application should move upstream to different environments. For example, an organization’s web environment may consist of development, staging, and production serverswhere initial coding occurs in development, testing/review occurs in staging, and live hosting occurs in production. The development environment provides a safe area where you can initially develop without worrying about code or application behavior disrupting other shared processes. Many developers use their own local machines effectively for development. Staging environments typically mimic the production environment in terms of configuration, and provide an area for review and testinga last embarkation point, so to speak, before application code goes into production mode. Production environments are “live” this is where customers and users interact with your application. Word (e.g. coding) should never be done in production. Typically load balancing and other application server-level optimization occurs in the production environment.
Version control methods also vary, but the general idea is that changes to a code base should be tracked and managed, in the event that rollback is necessary. Some popular version control programs used with LAMP are Git and CVS with Git being our go to.
You should employ an Model-View-Controller framework in building your PHP application. The Model-View-Controller (MVC) framework has in recent years become the de-facto standard for designing web applications, and with PHP, there is no shortage of frameworks to choose from. Web applications written with the MVC framework can be upgraded and maintained easily. For example, developers can implement a new user interface without rewriting the whole application. Also, because their work is contained in the view, there is no interference with other portions of the software contained in the model or controller. The database developer can rest assured that the aforementioned work on the user interface (the view) will not affect his or her work on the database (the model). This is the essential benefit of MVC, and why it is a standard practice in software development today. MVC essentially provides greater structure and organization to a program, and should be used when developing PHP web applications.
PHP MVC frameworks vary greatly in terms of learning curve, power and breadth of features, and speed/performance. Ultimately, the choice comes down to a particular organization’s needs. For example, CodeIgniter and Yii are relatively easy to learn, fast with a minimal footprint, and well-supported with a sizable developer following. On the other end of the spectrum is Zend Framework 2– arguably the probably the most powerful PHP framework and an associated steep learning curve, as it is Java-like in nature. Zend Framework 2 is the choice framework for building corporate and enterprise PHP software applications. It is also our go to here at Otreva for these reasons.