The favourite whipping boy of programmers everywhere has once again taken its licks in a blistering blog article titled PHP: a fractal of bad design. While no stranger to lengthy lists of its shortcomings the latest attack is a cavalcade of issues that the language suffers from. Apart from the vigorous nodding in agreement, debate online has centred on the most pertinent of questions, “Why would a programmer use this abomination of a language?”
PHP is not universally held in such low regard. It is, for the web layperson looking to dip their toe into the world of development, an easy and forgiving environment which allows them to peruse a few tutorials and have a basic site up and running in almost no time at all. By just creating a text file adding a bit of code, changing the extension to .php and uploading to a web server you can instantly create a site. Skimming a few more articles will have you connecting to a database and proudly running a “real” website. Besides it’s used on some of the largest websites in the world such as Wikipedia and Facebook, they must know what they are doing so it can’t be all bad right?
Detractors would point out that enabling amateur web developers to throw together sites will almost no idea of what they are doing is a recipe for disaster. While the site they produce may indeed work, in the eyes of a developers it is only in the most tenuous sense possible and will most likely be riddled with security holes. When such code bases are inherited the amount of refactoring require means that almost none of the original code will be kept. As a developer you will have to view PHP code that will likely leave you bug eyed in disbelief. For the language itself the bizarre rules of equivalence, the inconsistencies in everything including the standard functions will likely drive you mad. The avoidance of any discussion of parameterized sql statements in the official documentation in favour of telling you to escape your strings is insane. The list goes on and on.
So why use PHP? Simply there is no viable alternative if you need to be able to host your site almost anywhere. Other languages require software stacks and web specific frameworks to run a site, ensuring you will need to have knowledge of more than just the language used. The site produced will probably have to run under Fast CGI on a server resulting in less than grand performance. PHP in contrast is ubiquitous and supported by pretty much all web hosts. It is unavoidable if you are to be a web developer and you will need to know the language even if it is not to be your primary skill. Even then your job most likely will be using PHP given that easily 80% of development jobs will use it.
To know PHP’s shortcomings is to be able to avoid them. You do not need to program in the Cargo Cult, copy and paste method used by beginners. There are a variety of frameworks now available that take care of the boilerplate and require you to structure code with a separation of concerns. While PHP is forgiving when used poorly there is no reason you cannot code in a correct manner following best practices. Doing so will help raise the awareness of these issues with potential developers and allow them to avoid the mess of spaghetti code that has come before. When used with a framework such as Codeigniter PHP becomes almost pleasant to use, but maybe that is the Stockholm syndrome speaking.