SitePoint PHP Blog: More Tips for Defensive Programming in PHP

The SitePoint PHP blog has posted a tutorial continuing on from some previous advice with even more defensive programming practices you can use in your PHP applications.

Many people argue against defensive programming, but this is often because of the types of methods they have seen espoused by some as defensive programming. Defensive programming should not be viewed as a way to avoid test driven development or as a way to simply compensate for failures and move on. […] What are these methods, if not ways to anticipate that your program may fail, and either prevent those, or else ways in which to handle those failures appropriately?

They go on to talk about the ideas of "failing fast" when errors happen in your application with an extra suggestion added on – "fail loud" too. The tutorial then looks at four different places where more defensive programming techniques can be applied (and how):

  • Input validation
  • Preventing Accidental Assignment in Comparisons
  • Dealing with Try/Catch and Exceptions
  • Transactions

They end with a recommendation that, while you should fail fast and loud when issues come up, be sure it’s not to the determent of the overall user experience or sharing messages with users that may just confuse them.

Ibuildings Blog: Programming Guidelines – Part 1: Reducing Complexity

On the Ibuildings blog Matthias Noback has kicked off a series that wants to help PHP developers reduce the complexity of their applications. In part one he shares some general tips along with code snippets illustrating the change.

PHP is pretty much a freestyle programming language. It’s dynamic and quite forgiving towards the programmer. As a PHP developer you therefore need a lot of discipline to get your code right. Over the years I’ve read many programming books and discussed code style with many fellow developers. I can’t remember which rules come from which book or person, but this article (and the following ones) reflect what I see as some of the most helpful rules for delivering better code: code that is future-proof, because it can be read and understood quite well. Fellow developers can reason about it with certainty, quickly spot problems, and easily use it in other parts of a code base.

The rest of the article is broken up into several changes you can make to reduce complex code including:

  • Reduce the number of branches in a function body
  • Create small logical units
  • Using single (variable) types
  • Making expressions more readable

He ends this first post in the series with a mention of a few other books to read up on around the subject of "clean" and less complex code. Programming With Yii2: Integrating User Registration has posted the next part in their „Programming with Yii2“ series today with this tutorial showing you how to integrate user registration into your sample application.

This is part four of a series on Yii2. In Programming With Yii2: Getting Started, we set up Yii2 locally, built a Hello World application, set up a remote server, and used Github to deploy our code. In part two, we learned about Yii’s implementation of its Model View Controller architecture and how to build web pages and forms that collect and validate data. In part three, we learned about working with databases and ActiveRecord. In this tutorial, we’ll walk you through integrating a popular user registration plugin.

They walk you through the use of the Yii2-User extension to provide the user handling functionality. The tutorial shows you how to get it installed (via Composer), run its database migrations to create the needed tables and where to update the configuration files to pull the plugin into the execution. They also help you set up SwiftMailer (what it uses to send its emails) and then gets into the integration of the registration with the application with a signup page.


Liip Blog: Functional Programming in PHP

On the Liip blog today there’s a tutorial from Gilles Crettenand giving you an overview of functional programming in PHP. While PHP is not normally used as a functional language, it is possible to simulate the same effect.

Functional programming has gained a lot of traction those 3 to 5 last years. […] Those [frameworks and languages] are all cool and shiny new toys, but we can benefit from some techniques without having to learn a new tool, just by applying some principles to our everyday PHP! But first of all, what exactly is functional programing?

He starts off with some of the basics of functional programming, some of the difficulties that can come with it and, of course, the advantages it can provide. From here he starts in with code examples. He shows how functions become „first-class citizens“ and how they can be applied to various elements. He illustrates this with a few array manipulation examples. Next up are „utility functions“ for evaluating the data given (like „any“ or „all“). He ends the post looking at the idea of „memoization“, or the caching of the results of function calls against data. He shows how to accomplish this with static local variables in PHP and includes a wrapper you can pass any callable function into and have the results cache automatically.

Link: Entdecken Aspect Oriented Programming mit CodeIgniter, Teil 3 ist zurück mit der dritten Teil der Serie geht es um Aspect Oriented Programming mit dem CodeIgniter Rahmen. ( Teil 1 , Teil 2 )

In den vorangegangenen Teilen der Serie haben wir gelernt, über AOP Konzepte und die Notwendigkeit für den Einsatz von AOP in Großprojekten und ich stellte CodeIgniter der Haken als bequemen Mechanismus zum Erstellen von AOP-Funktionalität von Grund auf. In diesem Teil werde ich Ihnen zeigen, wie sowohl XML und comment-Techniken verwenden, um benutzerdefinierte AOP-Funktionalität zu erstellen, wenn ein engagierter AOP-Framework ist nicht vorhanden.

Sie beginnen mit dem XML-Konfigurationsdatei, die ein paar Aspekte und pointcuts für die Anwendung definiert. Diese wird dann über die in „applyBeforeAspects“ gelesen und die Aspekte, zuerst ausgeführt werden sollte, extrahiert werden, geladen und ausgeführt. Anschließend nehmen sie die anderen Ansatz – basierend auf Docblock Kommentare – und in den Kommentaren (das @ vor und @ nach tags) ziehen und laden / ausführen Aspekte, die Art und Weise statt.

Stuart Herbert Blog: Introducing ContractLib (Programming Contracts)

In diesem letzten post in seinem Blog Stuart Herbert stellt ein System schuf er auf „Verträge“ in PHP Entwicklung Griff ist – ContractLib .

Programming Verträge sind Tests rund um Funktionen und Methoden, und sie sind in der Regel verwendet: keine „schlechten“ Daten, die in der Funktion oder Methode aus der Anruferliste übergeben wurde zu fangen, und zu „schlechten“ Daten, die von der Funktion oder Methode, bevor generiert fangen kann es an den Aufrufer zurückgegeben werden. Diese sind Voraussetzung und post-condition-Tests, und sie sind Tests, die entweder bestanden oder nicht bestanden.

Er weist darauf hin, dass, indem er Verträge steigern Sie nicht nur die Robustheit des Codes, sondern Sie sparen auch Zeit versuche nicht, auf die Jagd nach Daten-bezogenen Fragen. Mit Vorbedingungen, können Sie überprüfen können Daten, um Dinge wie korrekte Formatierung, Daten, die aus der Reichweite und Daten, die eventuell fehlen gewährleisten. Seine ContractLib kommt mit einer Reihe von Tests , dass gute Beispiele, wie man die Funktionalität nutzen zu können. Die Installationsanweisungen sind enthalten.

Smashing Magazine: My Favorite Programming Mistakes

Auf dem Smashing Magazine Ort gibt es einen Beitrag einige Paul Tero ’s bevorzugten Programmiersprache Fehler , er ist über gekommen sind und gehört in seiner Zeit-Programmierung.

Ich mag diese Fehler in drei große Gruppen einteilen: Hahn-ups (oder Schraub-ups im amerikanischen Englisch), Fehler und Versäumnisse. Ein Hahn-up ist, wenn man an die Wand starren auf den Bildschirm und Flüstern „Oops“: Dinge wie das Löschen einer Datenbank oder Webseite, oder Überschreiben drei Tage im Wert von Arbeit, oder versehentlich eine E-Mail 20.000 Menschen. Fehler alles abdecken, von der einfachen Syntax-Fehler wie das Vergessen einer}, um schwerwiegende Fehler und Rechenfehler.

in seine Liste aufgenommen sind Dinge wie:

  • Verlassen des Debug-Modus auf
  • Turning Debug Mode Off
  • Falsche Variable Type
  • 1p Fehler

Beispiele sind jeweils mit beiden Codes und Beschreibungen sowie „lessons learned“, damit Sie nicht die gleichen Fehler machen in Ihren Anwendungen enthalten.