PHP

Posts about the server side scripting language PHP

PHP Logo

PHPNW13: A Review

14th October 2013 - 20 minutes read time

PHPNW13 is the 6th annual PHPNW conference, organised by members of the PHPNW community and Magma Digital. This year the conference saw around 420 people (with myself as a helper) at the conference, which was held in the Manchester Conference Centre.

My involvement in PHPNW13 started a few months before the actual conference. When the call for papers closed back in June I spent a weekend reading the submissions so that we could pick which sessions would be at the conference. Out of the 183 papers submitted (20 more than last year) we had to pick just 35 or so sessions that would be presented at the weekend. The final selection of talks was really good and judging by the comments and rating on joind.in they were well received by the other conference attended as well.

Read the full article

PHP Logo

The Monty Hall Problem In PHP

24th September 2013 - 13 minutes read time

The Monty Hall problem is a counter intuitive problem in probability mathematics that deals with picking the right prize from a set of three doors. The problem is named after the television celebrity Monty Hall and is loosely based on the USA game show Let's Make a Deal.

This has become a popular problem in programming as it is a good exercise in thinking through a problem to prove what outcome actually occurs. Lots of examples have been posted online so I thought I would sit down and attempt to solve it myself. The problem is most commonly summarised as follows (this example was taken from Rosetta Code):

Read the full article

Phing Logo

Changing Memory Allocation In Phing

7th August 2013 - 3 minutes read time

Running complex tasks in Phing can mean running out of memory, especially when altering or changing lots of files. I was recently working on a image sorting Phing project that sorted images based on EXIF information. The many thousands of files involved, along with the custom target used to extract the EXIF data caused the default available memory to run out quite quickly.

<php expression="ini_set('memory_limit', '1G');"></php>

There is no direct way to alter the PHP memory limit setting through Phing, but it can easily be altered using a Phing php task. This evaluates the PHP function ini_set() and set the memory_limit value. The following Phing task sets this limit to be 1G, or 1 gigabyte.

Read the full article

PHP Logo

Sieve of Eratosthenes In PHP

5th July 2013 - 5 minutes read time

The sieve of Eratosthenes is named after Eratosthenes of Cyrene who was a Greek mathematician who devised a mechanism to find a sequence of prime numbers using a simple algorithm.

Normally, looping through a list of numbers and finding the primes can be an expensive process. The seive of Eratosthenes is one of the most efficient way of working out all of the smaller prime numbers below (below 10 million or so).

The sieve works by looping through a list of consecutive numbers, starting at 2. For each number in the sequence the multiples of that number are marked to be removed from the list of numbers. When finished the numbers that are not marked are prime numbers.

This algorithm is pretty straightforward, but from that it is possible to create a simple PHP function that will generate all the prime numbers up to a given number.

Read the full article

Phing Logo

Listing Phing Targets In A Project

28th June 2013 - 5 minutes read time

Providing a Phing build file along with a project is a good way of allowing automation of certain aspects of the project. The only trouble is that users won't know what's in the build file unless they open it or just run it. You could provide documentation along with the build file so that users know what to use the file for, but a better approach is to list out the targets available in a project. This can be done easily by using the -l (lower case L) or list flag, which will just list the available targets in the supplied build file.

Running this on a build file will produce this sort of output from a build file with two targets, one of which is run as a default.

Read the full article

Phing Logo

Control Structures In Phing

2nd June 2013 - 22 minutes read time

Phing has a few different tasks and elements that allow you to select paths of code execution depending on what you need to happen in a build file. These are limited to loops and if statements, but a lot of functionality can be covered with just a couple of lines of XML.

Read the full article

Phing Logo

Source Controlled Git Hooks With Phing

11th May 2013 - 7 minutes read time

The other day I was experimenting with Git hooks. These are scripts that you can execute before certain actions are run in Git. For example, you might want to ensure that forced updates are not run, ensuring respository files have the correct permissions after merging, or that the files have ASCII standard names before being committed.

To use a hook in Git you just need to add them to the .git/hooks directory in your respository and to change the mode of the file so that it is executable. A new Git repository will create several sample hook files that can be used by removing the '.sample' from the end and making them executable. For more information on Git hooks and how to use them see the Git hooks manual page in the Git documentation.

Read the full article

Phing Logo

Detecting The Sudo User In Phing

10th April 2013 - 11 minutes read time

I use Phing for a lot of different tasks, it helps me to automate things that I would otherwise mess up if left to my own devices. Prime candidates for Phing scripts are things that I don't do that much and forget how to do them, or that have a number of complex steps. The only problem I have found is that because many of the Phing scripts I create rely on system changes (eg, configuring an Apache server) they therefore require system changing privileges. Normally I would just prefix the Phing command with sudo, but every now and then I forget all about that step and the build fails. This can be dangerous as I am then left with a build that failed, which might leave a system partly configured or even take a server offline.

Read the full article

PHP Logo

Finding The First And Last Items In An Array In PHP

24th March 2013 - 8 minutes read time

Getting the first or last item from an array in PHP is usually quite easy. If you create an array and then add a bunch of values to it then the array index will increment by 1 for every element you add. This means that in order to get the first element from an array you just reference the default starting position (0). To get the last item in the array the index key will be the length of the array, minus 1. Here is some example code showing this.

<?php
$array = array();
$array[] = 1;
$array[] = 2;

// get the first item in the array
print $array[0]; // prints 1

// get the last item in the array
print $array[count($array) - 1]; // prints 2

Things become slightly more complicated when the array has non standard key values. Take the following array for example in which the array count it started at 1.

Read the full article

PHP Logo

Using XPath With HTML Files In PHP

14th March 2013 - 11 minutes read time

I recently have started looking into making myself a PHP Zend Certified Engineer and after doing a bit of research I found that the standard PHP string and array functions appear to be a large part of the exam material. So as a starting point (and for future revision) I decided it might be a good idea to create a revision sheet for those functions.

Read the full article