Global Namespace Collision Detection in PHPNamespaces have existed in PHP since version 5.3 to avoid two classes with the same name from different parts of the codebase conflicting…
Checking Extensions on Laravel Sail and VaporOne of the Protect Earth API volunteers was looking into using Laravel Excel to add “Download CSV” functionality to Protect Earth’s amazing…
Codes of Conduct: Maybe They're Not So Bad?I’ve written a few articles about Code of Conducts, which are a hotly debated version of the Anti-Harassment policy you almost certainly…
PHP-FIG: 3.0 or RebrandI’m tired of talking about the PHP-FIG. I don’t want to, and I won’t have anything to do with it. That said, as my timeline is full of old…
Talking About Diversity: ConspiracyThis is part two of a blog series, about why the PHP community is having a rough time talking about diversity related issues (like code of…
Talking About Diversity: MarginalizationThe other week I was out doing a charity bike ride; a Breast Cancer benefit from London to Cambridge. It was a lovely ride with a new group…
Why Care About PHP Middleware?Recently there has been a lot of buzz about HTTP middleware in PHP. Since PSR-7 was accepted, everyone and their friend Sherly has been…
Loudly Ignoring How CoCs WorkPaul Jones recently wrote an article called An Object Lesson in Conduct Enforcement. The title starts off factually inaccurate, and it goes…
PHP Town Hall: Code of ConductThe other week I wrote an article called Why is Everyone Outraged?, where I explained how the media often manufactures outrage, making it…
Made in Production II: Learning and ImprovingMade in Production has been something that my BFF Zack and I have been working on for a while. We had the idea to start selling super-niche…
The Importance of Serializing API OutputI’ve given the API Pain Points talk a bazillion times over the last year. In just 2015 I gave it at: Lone Star PHP OpenWest ConFoo One…
Happily Stepping into the ShadowsAnyone who knows me better than my Twitter profile will know I have a love/hate relationship with my reputation, and the online persona that…
A Quick Note on PSR NumberingThe last PSR from the FIG to be sent out into the world, to be used by whoever felt like using it, was PSR-4: Autoloader. Now people are…
PHP 7 Feature FreezeToday was the feature freeze for PHP 7. That means no new votes can be started for a feature that is aimed at PHP 7.0, and would instead…
PHP Void: Much Ado About NothingRecently Return Types were accepted for PHP 7, which makes me very happy. This RFC was a real work of art. Levi Morrison sidestepped various…
Meet the LeagueA few months ago I wrote What is The League of Extraordinary Packages?, and it was clearly written in a defensive tone. I wanted to explain…
Developer Fallacies of 2014Some people like to take a quick walk down memory lane in January, and post their highlights of the previous year. Last year (2014) was…
The State of MarkdownThe answer to “What is the State of Markdown?” is “Yes, it’s a f**king state.” Markdown has been around for a long time, since John Gruber…
Treehouse: PHP Standards and Best PracticesA while ago Treehouse got in touch with me, and asked me if I would be interested in working with them on a video course. They wanted more…
PHP Wars: Attack of the ClonesIn the last article I said I wanted to write about when its a good idea to release a component. A lot of this comes down to: is there one…
What is The League of Extraordinary Packages?This is the story of group of friends, who decided to write some code, but somehow confused and angered everyone with a keyboard. tl:dr…
The Neverending Muppet Debate of PHP 6 v PHP 7Update 12/12/2014: The answer is now of course PHP 7. There are a few major, important conversations happening in the PHP internals mailing…
Send PSR-0 to the Standards Farm in the SkyThis article attempts to convince you that deprecating the PSR-0 auto-loading standard in favor of the PSR-4 auto-loading standard is not…
Fractal v0.8.0, now with SerializersA new version of Fractal is out, which is a package aimed at making life easier to API developers handling output. At a basic level it acts…
Heroku and PHP Sitting in a Tree. K.I.S.S.I.N.GHeroku was - as far as I remember - the first (mainstream) PaaS on the market. It was Ruby-only but it was that symbol of modern web…
Made in ProductionLate last summer I was riding my bike around the mountains of New Jersey. I’m not sure if it was exhaustion, the heat or the fact that I had…
PHP-FIG: Autoloaders, Amendments and The "15th Standard"I’ve managed to get myself involved in a lot of projects in and around the PHP community because I like to offer my advice, experience and…
The "Framework" is Dead, Long live the FrameworkThere have been a few posts over the last few months saying that the age of the framework is dead, and that Composer is the true savior, and…
Autoloading Laravel application code with PSR-4When you use Laravel it’s very likely you autoload extra code than just the controllers/models that are autoloaded by default. Some use…
Composer now supports PSR-4I haven’t really posted about PSR-4 here other than as a footnote in this old article, but if you follow me on Twitter or hang out on Reddit…
The Tribal Framework MindsetTwitter seems to lead to the same thing happening over and over again. I say something I think is entirely uncontroversial People…
PHP API's: Fractal of GOOD DesignRecently I started a new blog series called “Build API’s That You Wont Hate”, starting off with Part 1 - Useful Database Seeding. It was…
Benchmarking Codswallop: NodeJS v PHPSometimes people link me to articles and ask for my opinions. This one was a real doozy. Oh goody, a framework versus language post. Let’s…
Build API's That You Wont Hate: Part 1 - Useful Database SeedingA little while back I produced an article called Building a Decent API which was mostly a tongue-in-cheek list of things that I’d come…
PSR-2 v CodeSniffer PSR-2: A Success StoryI’ve had static analysis tools running in Sublime Text for a long time, but for most of that time I have had CodeSniffer and it’s PSR-…
Solving the PHP Internals WorkflowOn Monday I posted a tale of woe, which like any good tale had a moral at the end. The moral was that while PHP internals has its troubles…
WTF is T_PAAMAYIM_NEKUDOTAYIMAnyone who has mentioned PHP Fractal of Bad Design to me knows I don’t give it much credit. It’s a list of complaints about loose-typing in…
Named Parameters in PHPUpdate 06/09/2013: I had initially offered to put together an RFC draft updating the original rather dire efforts at documenting PHP’s lack…
Potential Variadic Function Syntax for PHP 5.6An awesome RFC popped up the other day: Syntax for variadic functions, developed by Nikita Popov. I read through it and I loved it, but I…
CurlFile and the Facebook SDK in PHP 5.5One of the features implemented in PHP 5.5 was CurlFile, a nice addition to the Curl extension to allow you to specify specific arguments as…
FUD Cracker: PHP 5.5 never lost JSON supportI’m posting this because I have accidentally been perpetuating some FUD, that PHP 5.5 has had its JSON support removed. It hasn’t. Some…
PHP Static Analysis in Sublime TextCoding Standards have been around for the longest time and recently they’re starting to become more widespread in PHP. While learning Python…
Progress in the PHP-FIGThe PHP Framework Interoperability Group (PHP-FIG) has been around for 4 years, and it’s produced 4 PSR’s, which to some is a sign of…
Beware the Route to EvilAs programmers we should all be used to the fact that our personal preferences and habits are all subject to change. I used to be a big fan…
Composer and PSR-0: Friends, Not RelativesAs a huge proponent of Composer, a happy user of PSR-0 and a voting member on the PHP-FIG I get into plenty of conversations about all of…
Testing and Contributing with Composer PackagesWhile Composer has been around for a while now, many packages are still in their infancy (< 1.0) or sometimes are just not as feature filled…
Is PSR-0 Shortsighted, or are you?One of the fun things about trying to support the PHP-FIG and all the good its doing, is seeing blog posts written complaining about it by…
PSR-2: The Tough DecisionPSR-2 has been out for a while now, and even though developers from member projects (such as Joomla, Drupal, phpBB, CakePHP, Symfony and…
Pick PHP Requirements for Packages ResponsiblyI recently tweeted something which seems to have confused a lot of people: Now, don’t go running off to PETA, I’m clearing kidding about the…
Help test PHP 5.5 beta1Yesterday PHP.net announced the release of PHP 5.5 Beta-1. This is a great news after the concerns that merging Zend Optimizer+ would really…
PHP 6: Pissing in the WindUpdate 12/12/2014: This ended up getting to #1 on Google for “PHP 6” so I thought it was important to give an update. The article hoped to…
The Most Important Conversation EverThe world today has a lot of hot topics that need to be discussed. Washington needs to get together to help sort out the debt-ceiling to…
Why do some PHP Developers <3 Static APIs?There are two kinds of PHP developers. Those who absolutely love static methods because they are easy to work with and those who think they…
Why some people hate PHPThis is a repost of my answer to the Quora question: Do a large majority of people hate PHP solely because other people do so? There are a…
Bye Bye PHP 5.2PHP is undeniably the most used language when it comes to building web applications. Around 78% of the internet is powered by PHP and the…
Cloud Hosting for PHP: The Eternal Pipe DreamI posted an article at the start of the year called 2012: The year of PHP cloud hosting. Well, not really. Sure there are two months left in…
Package Watch: Image ManagementSorry if I sound like a broken record, but packages are f**king brilliant. I’ve mentioned before that packages are the future of PHP and…
Why PHP DateTime RocksWorking as a freelancer and contractor sometimes I come across some code that is so terrible I have to laugh, then immediately tweet a…
PHP: Ecosystem UpdateDon’t worry guys, this isn’t another PHP apologist or PHP hater blog. We’ve all had enough of those recently. This is a quick heads up on…
Laravel is AwesomeYou might not expect to hear that from a CodeIgniter and FuelPHP developer, but it’s true. Taylor has done a brilliant job writing code that…
Composer with CodeIgniterComposer is the best thing for PHP since sliced arrays and using it in your applications means you have easy access to a large selection of…
CMS: Interesting History, Powerful FutureAs a CMS developer on the PyroCMS team, a common problem I have to deal with on an almost daily basis is peoples strange fear of using a CMS…
Packages: The Way Forward for PHPWhat is a package? A package is a piece of reusable code that can be dropped into any application and be used without any tinkering to add…
2012: The year of PHP cloud hostingCloud hosting is nothing new. Seeing as “cloud” is such a loosely used term some will consider their VPS solutions on Slicehost or Rackspace…
PHP Basher BashingAnyone who has used PHP for a while knows that it has its ugly parts. Recently I’ve seen a whole swathe of PHP-bashing articles and that…
Time for a ChangeAfter years of being an active member in the CodeIgniter community I have decided it is time to change things up and move on. Where is that…
PHP Format abstraction with a simple classHaving a quiet night in before a long day of kayaking I thought I’d write some fun code instead of banging out the usual shit like I’ve been…
Tiny REST framework in PHPI figured it is about time I start selling some of my work as the number of libraries and projects I have released open-source means I spent…
Twiny-Framework: the framework small enough to tweetMany frameworks say they are lightweight, quick and easy on your server, but none are as lightweight as my new “framework” which is so…
DateTime objects - Start month, end month, first Monday, etcI recently came across PHP’s DateTime object and I’m loving it. Working out the first Monday of the month is also quite easy, but has one…