21. August 2007, 10:33, by Maarten Manders

Dependency Injection for Unit Tests in PHP

Writing testable code is tricky. On reason is because you have to test all of your software components individually and isolated from each other. Imagine that you’re testing your new and cool DB abstraction layer. It’s using:

  • Some sort of error log
  • A config component to fetch DB credentials
  • Your caching layer to temporarely save stuff
  • I almost forgot: It’s using PDO

Loose Coupling

Having everything tied up like this, you’re going to have a hard time testing it. After all, you don’t want to test the connected components, just your new and cool query class. That’s where Dependency Injection kicks in – along with some other patterns with cool names. The goal is to break your piece of software down to a bunch loosely coupled components and tie them together dynamically. As soon as your software is getting the Lego look and feel, you know that you’re on the right track. This is where you can use Dependency Injection for the logging component:

// Instantiating the components
$loggingComponent = new Fancy_Error_Log();
$fancyQuery = new Fancy_Db_Query();

// Tell your query what to use for logging

Does it feel Lego already? Then go on and do the same with the other 3 dependencies.

Filed under: PHP,Programming,Web Development
24. June 2007, 09:53, by Silvan Mühlemann

PHP5-Entwickler im Aufstieg

TreppeIhr habt spannende Projekte, ein tolles Team, fünf Wochen Ferien… aber tut mir leid… Ihr arbeitet mit PHP… Ich möchte eher Richtung Java gehen“, hat ein Bewerber für die Software-Entwickler-Stelle seine Absage begründet.

Ich denke, das Image von PHP ist ein Problem für Unternehmen, welche PHP-Talente suchen. Erwähnt man PHP, dann kommt dem Software-Entwickler Stichworte wie “Gästebuch-Programmiersprache”, “Personal Homepage Processor”, “Spaghetti-Code”, “Sicherheitslücken in phpBB” in den Sinn.

Filed under: Programming,Web Development
17. June 2007, 19:15, by Leo Büttiker

Crazy Numbers in PHP

If you’re programming php for a while you know PHP has some fancy type converting stuff. Or do you know an other programing language that can do that?

echo “10 Apple” * “10 bags” //you get 100

The trick is simple, if you do a mathematical operation on a string, PHP tries to convert it in a number. It does the number parsing of the string from the left to the right, as long it’s a number and stop afterwards. So converting of “12 number 34″ will you just get you 12. If the string do not start with a number PHP converts it to a 0. So be careful about 100/"bags 10".


Filed under: PHP,Programming
11. June 2007, 07:31, by Maarten Manders

Webtuesday: CouchDb talk by Jan Lehnardt

Tomorrow the next Webtuesday is taking place at the namics offices in Zürich, starting at 19:30. This time, Jan Lehnhardt will come for a visit and talk about CouchDb, a “distributed document database system with bi-directional replication”. For those among you who still can’t imagine what this could be, here’s a quick overview. ;-)

Thanks to Liip for sponsering his visit!

Filed under: PHP,Programming,Web Development
7. June 2007, 16:24, by Maarten Manders

So what does ZFTestManager do?

Recently, I was wondering about a way to simplify unit test management. I finally stumbled over Zend Frameworks Test Manager and promised to report about my experiences.

What it does

In PHPUnit’s preferred testing architecture, every package and subpackage has it’s own testing suite in a AllTests.php script. Those testing suites can be hierarchically composed to build one big testing suite for your project.

ZFTestManager adapts to this architecture and scans your tests directory for AllTests.php to create a list of testing suites. It allows you to:

  • list all suites
  • run suites, filtered by regular expressions
  • create new suites (by creating a AllTests.php skeleton)

Furthermore, it offers a configuration file with a section for each test. There, I can define DB credentials, hosts, ports, paths and so on. Quite handy to have all config settings of my tests in one single file.

Filed under: PHP,Programming,Web Development
3. June 2007, 19:44, by Maarten Manders

Hacking Your Browser History

Apparently, this hack has been around for a few months but it wasn’t before yesterday when it went all over the news: Even your browser history isn’t safe anymore. Jeremiah Grossman found a clever way to poke into a user’s browser history to check if he or she has visited a certain URI. All it takes is some Javascript code that adds a link to a URI and then checks if it has the :visited CSS pseudo-class. In fact, it doesn’t need Javascript, these guys already created a CSS version of it, exploiting the background image XSRF attack.


Filed under: PHP,Programming,Web Development
21. May 2007, 11:10, by Maarten Manders

Testing Framework for PHPUnit3

Welcome to tilllate’s first English contribution. In order to get this blog onto PlanetPHP there will be a series of English and PHP-only posts. My name is Maarten Manders and I’m one of tilllate’s newest members in the family. You might know me from Sitepoint or Webtuesday.

The PHPUnit3 manual says: “One of the goals of PHPUnit is that tests should be composable.” This can be done using The PHPUnit test suites.

< ?php // assembling suite $suite = new PHPUnit_Framework_TestSuite('AllTests'); $suite->addTestSuite(‘FirstTest’);
$suite->addTestSuite(‘Second Test’);

// running suite


Filed under: PHP,Programming,Web Development
8. April 2007, 16:50, by Silvan Mühlemann

Textanalyse: Der erste Schritt zum OO-Design


Als ETH-Betriebs- und Produktionsingenieur (Grundstudium Elektrotechnik) weiss ich, wie man triviale Sachverhalte in komplex wirkenden PowerPoint-Slides darstellt. Von sauberem OO-Design wurde mir hingegen nichts beigebracht. So kam es, dass die erste tilllate-Version vom Jahr 2000 aus 30 PHP3-Skripten à je 2000 Zeilen aufgebaut war.

Zum Glück war ich von 10 bis 16 ein Ober-Geek und verbrachte vor dem C-128D und Amiga, währende andere auf dem Fussballplatz oder am ZSC Match waren. Zum Glück: Denn trotz 2 Jahren Consulting-Ausbildung blieb noch ein kleines bisschen PC-Affinität übrig. Ich lernte schnell, dass der PHP3-Spaghetti-Code von damals weder wart- noch ausbaubar war.


Filed under: Programming
5. December 2006, 22:01, by Silvan Mühlemann

Nachttischlektüre für Programmierer

Buchcover "Der Pragmatische Programmierer"«Du liest Fachbücher vor dem Einschlafen?», hat man mich gefragt, nach meinem Blog-Beitrag von letzter Woche, «dann träumst Du also von Kopplung und DRY-Prinzip? Reizend. Da lese ich lieber Das Sakrileg und träume von Sophie Neveu.»

Bei den meisten anderen Fachbüchern geht es mir gleich. Der Pragmatische Programmierer ist da anders. Dies zeigt nur schon der Blick ins Inhaltsverzeichnis: Kapitel 1: Der Hund hat meinen Quelltext gefressen, Kapitel 10: Leuchtspurmunition, Kapitel 37: Unlösbare Rätsel. Satire, Kriegsroman oder Indiana Jones? Nein, nicht ganz so abenteuerlich. Aber exemplarisch für Stil des Buches: Trockene Themen wie “Testing”, “Orthogonalität” und “Metaprogrammierung” werden durch farbige Beispiele und eine sympathische Sprache beschrieben.

Filed under: Programming
29. November 2006, 23:14, by Silvan Mühlemann

Teste häufig: Jede Stunde. Automatisch.

Acid Test for Browsers“Teste häufig”, predigt “Der Pragmatische Programmierer”, mein aktuelles Nachttischbuch. Häufiges Testen = automatisches Testen. Denn wer will schon die gleichen Testcases immer und immer wieder durchführen?

Funktionstests machen wir mit Selenium, wie früher schon berichtet. Im Normalfall öffnet man den TestRunner und startet den gewünschten Test per Mausklick.

Für das automatisch ausgelöste Testen kann dem TestRunner der Parameter auto=true übergeben werden: Die Testsuite wird geladen, die Tests werden sofort, ohne Zutun des Benutzers abgespult.

Filed under: Programming,Web Development
« Previous PageNext Page »

© 2017 tilllate Schweiz AG - Powered by WordPress