The pipeline pattern is one way to refactor your code to separate concerns. Here is an example of un-refactored code that uses individual if statements to process some data. I’ll keep the details out for clarity. This code seems simple
The current state of things
It’s amazing how life gets going in a rhythm, and you get your head down and working so hard, that you sometimes forget to look around (or in this case, write in your blog). Working at a small travel advertising
Sorting Associative Arrays in PHP
$arr = [ ‘foo’ => ‘bar’, ‘faz’ => ‘baz’ ]; array_multisort(array_column($arr, ‘value’), SORT_ASC, $arr); You can sort an associative array with one line of code as I did above. As a result, the array becomes sorted by the keys: [
PHPStorm – Stop those accidental tab closures!
If you’re like me, you have probably had this happen. You go to click on one of the many tabs you have open in PHPStorm, only to accidentally click the X, and close it. ARGH! Today I found a way
Defensive Programming | Laravel find()
Defensive Programming One of the things I’ve learned in my career is to code defensively. Laravel makes it very easy to ask for an object, but it also makes it very easy to get it wrong. If you request an
Laravel – the difference between all() and get()
When dealing with a model, all() is a static method. It creates a new query object, and runs get() on that object get() is not static, but can be called statically because of a magic method in the Model class.
Laravel Eloquent only()
$fullModel = Model::find(1) // Get model with id 1 $idArray = $fullModel->only(‘id’) // array containing id // this does not work. You’ll get back an empty collection // It is trying to pull the id column off the collection object,
Laravel Eloquent Attributes
When dealing with an Eloquent model, you can add your own attributes. These can be useful for computed values. For example: class Person extends Model { // By default, all the database fields will be available. // Let’s assume for
Laravel Eloquent sortBy function
Here is how you can sort a collection by an ordered array of ids. The use case here was that I had a number of objects in a Redis cache, which were retrieved in unsorted order. The objects were large,
Compact and Extract
Compact takes individual variables, and packs them into an associative array. Extract does the opposite. <?php // example code // Set 2 variables $var1 = “one”; $var2 = “two”; // Create associative array $arr = compact(‘var1′,’var2’); // Show results var_dump($arr);
Splat!
While looking through the Query Builder class in the Laravel source code today, I came across something I hadn’t seen before in PHP: $query->{$method}(…array_values($value)); I had no idea what the three dots meant, so I went looking for it. Turns
Understanding Octal
Why would we need to understand Octal? The most relevant reason I can come up with right now is that looking back at some of the interview question challenges I’ve posted, there is one that deals with an Octal number.
foreach vs array_filter
The problem: Given an array of numbers, create a new array containing only the odd numbers from the original. $original_array = [1,2,3,4,5,6,7,8,9,10]; There are two ways you can approach this problem. Let’s look at a foreach loop first: $original_array =
Factor Finder
// Number to factor $num = 60; // Loop from the number to factor down to 1 for($i=$num; $i>=1; $i–){ // If it divides evenly if($num % $i === 0 ){ // Output result of division, which is a factor
Changing the color of the first word
The question/problem is: Write a PHP script, which changes the color of the first character of a word. This challenge tests your knowledge of preg_replace, and regular expressions. $text = ‘PHP Tutorial’; $text = preg_replace(‘/(\b[a-z])/i’,'<span style=”color: red;”>\1′,$text); echo $text; ?>
Reference challenge
This one tests your knowledge of how reference variables work: $a = ‘P’; $b = &$a; $b = “PH$b”; What will $a and $b be after these three lines of code run? First, $a is set to ‘P’. Then, $b
preg_match problem
Given: $a = “4|6|3|5|x|2|”; Write code that will output: “2|3|4|5|6” It could be done the long way round, by turning the string into an array, looping over each element, testing each item to see if it’s a number, and placing
MySql Limit
SELECT c.first_name,c.last_name, o.order_total FROM customers c LEFT OUTER JOIN orders o ON c.id = o.cust_id WHERE o.order_total > 100.0 I was once asked to write a query similar to this. The goal was to select all customers who had placed
Array Sorting
I came across this problem recently: How would you sort an array of strings to their natural case-insensitive order, while maintaining their original index association? array( ‘0’ => ‘z1’, ‘1’ => ‘Z10’, ‘2’ => ‘z12’, ‘3’ => ‘Z2’, ‘4’ =>
How to enable PHP error reporting
ini_set(‘display_errors, 1); error_reporting(E_ALL); The ini_set function sets a configuration option for the duration of the script execution. When the script is done, the value returns to whatever it was set to originally in the ini file. The error_reporting function