Controller classes vs. Action classes
Paul M. Jones asked me to go into detail and explain my thoughts on the Action-Domain-Response pattern, particular why I think action classes make more sense than the commonly used controller classes.
Paul M. Jones asked me to go into detail and explain my thoughts on the Action-Domain-Response pattern, particular why I think action classes make more sense than the commonly used controller classes.
Since we have to deal with a lot of private packages which cannot be shared on packagist I set-up a private Satis repo. Whenever a new version of a package gets created the Satis build process is started by our Jenkins build server. In the last couple of months this process takes quite a while because Satis rebuilds the index for every repo it knows about. Since we deal with quite a few repos containing a large amount of versions it slowed down the "build time". Obviously it does not make any sense to run Satis on a repo that has not changed. Since Satis was lacking this feature I started hacking on it and I am happy that the feature got merged into master this morning. If you have to deal with large repos or a large number of repos you might want to give it a try.This is how things work:
First of all I assume you already got HHVM running with nginx. If this is not the case feel free to follow these steps to get everything up and running. To install Silex we will use Composer, so let's install all the needed requirements and Composer itself. As root user run the following commands:
I recently published a blog post on how to set-up HHVM in a virtual machine. Since the latest HHVM release a few things changed within HHVM and you won't be able to install HHVM that way. This blog post will give you some insights on how to install the current version of HHVM.
After trying to get a few application to run on hhvm I came across the following error:
As I blogged recently we solved the HTTP Basic Auth problem with Composer / Satis by using expect. I still like the general idea but expect can be a bit tricky to configure. For those of you who are not happy with that solution this one might be a good alternative: As I helped out Manuel Lemos to create an Composer Installer for phpclasses.org packages he pointed out that the new Composer Plugin API might make it easier to extend Composer and offer authentication support. And yes he was right ;) As I had some spare time last weekend I extracted the code handling the authentication logic from his installer and created a separate plugin which can be found on github and packagist.org.
UPDATE (04/2014): Since Facebook decided to remove the webserver functionality from the "official" binaries this howto will not work anymore! Read here how to set things up with the current version of hhvm.
Vom 24.02.2014 bis zum 28.02.2014 findet in Montreal die ConFoo 2014 Konferenz statt. Ich bin dieses Mal wieder dabei und kann zwei neue Vorträge präsentieren: Im Vortrag "The seven deadly sins of Dependency Injection" möchte ich darstellen welche Fehler man bei der Verwendung des Dependency Injection Patterns nicht machen sollte. Der Vortrag "The Setup: Composer, Phing, Vagrant, Jenkins" beleuchtet unsere Arbeitsweise mit den genannten Tools soll aufzeigen wie man mit den Tools arbeiten kann (aber nicht muss).
Vom 21.02.2014 bis zum 22.02.2014 findet in London die PHP UK 2014 conference statt. Ich freue mich als Sprecher dabei sein zu können und meinem Vortrag "The seven deadly sins of Dependency Injection" präsentieren zu können.
Vom 24.01.2014 bis zum 25.01.2014 findet in Antwerpen bereits zum fünften Mal in Folge die phpBenelux conference statt. Ich freue mich wieder einmal als Sprecher dabei sein zu dürfen und habe 2 neue Vorträge im Gepäck: Im Vortrag "The NoSQL Store everyone ignores: PostgreSQL" werde ich aufzeigen dass man durchaus auch mit relationalen Datenbanken schemafrei arbeiten kann. Im zweiten Vortrag "The seven deadly sins of Dependency Injection" möchte ich darstellen welche Fehler man bei der Verwendung des Dependency Injection Patterns nicht machen sollte.