Andy Wendt

Main Menu

Social Networks

All Posts

Anyone who has worked extensively with a strong OO language before writing their first line of Javascript is going to find out very quickly that they are not in Kansas anymore. For starters, without using some of ES2015’s goodness (ES6 previously) Javascript does not have block scope—it has function scope. Before the days of let, this means that variables cascade down the function chain.
For instance, if we declare a variable outside of any function or without specifying var before instantiating a variable (aka implicit declaration) for the first time, that variable is global.

The FROM clause in MySql is completed first and it provides the table from which other operations will be run. Even with that essential description, some constructions of the FROM can be difficult to understand and provide you with wildly unexpected results.
Those unexpected results come from the fact that the tables in the FROM clause are combined into one table for querying whether you specify the type of JOIN or not.

Generating integer sequences (e.g. all numbers between 20 and 100) in MySql is much harder than it needs to be. Other DBMS products have had such support for quite awhile.
In PostgresSql, you can do something like so:
SELECT * FROM generate_series(1, 6) number That will generate a table of numbers from 1 to 6.
Seems like basic functionality right? Not in glorious MySql. You have several options but they are either hacky or require a fair amount of work.

As a fun mental exercise I whipped this up. Is this really useful? Probably not. It is really a “code kata” if nothing else. I wouldn’t recommend using stored procedures in most situations since it is generally considered good practice to keep your logic in your code and not in the database layer.
Rules The standard rules for Fizz Buzz are:
Write a program that prints the numbers from 1 to 100.

I was needing to improve the performance of a pivot table seeder recently and decided to use a generator to do it. Interestingly, one of the easiest to implement iterators is the yield syntax introduced in PHP 5.5. It allows for good abstraction between the data that is to be iterated and the source of said data. That can lead to significant performance increases as well since it might, depending on the use case, reduce database calls or the amount of data being stored in memory among other things.

Sometimes Eloquent doesn’t provide all of the functionality and access to data that you need out of the box. Even Taylor Otwell, the framework’s creator, often uses query builder for his DB operations.
Getting wet Refer to the the query builder docs on how to use it: Query Builder
Running a query such as: \DB::table('users')->take(2)->get(); will return an array of stdClass objects.
What if you want to change those into User model objects?

With the release of PHP 7 just around the corner, a quick start guide seems to be in order. This guide was written with Linux in mind but it should work ok with Mac OS X. If you are on Windows, you should switch to Linux (or maybe Mac) :). Let’s get a testing environment set up.
1. Vagrant box installation First, let’s install VirtualBox
Next, you need to install Vagrant version > 1.

The first of the SOLID principles is unfortunately violated quite often even though it is easy to understand why you want to maintain a separation of concerns. It is similar to the SQL injection vulnerabilities that show up on StackOverflow and other places even though the internet is flooded with warnings about how to avoid being pwnd by the easily escapable beast.
In the example repository, I give the example of a basketball player that is both a coach and a player.

If you are trying to set an expectation for \Closure using mockery, you may have seen this error:
Mockery\Exception\NoMatchingExpectationException: No matching handler found for Mockery_0_NAMESPACE_CLASSNAME::METHODNAME(object(Closure)). Either the method was unexpected or its arguments matched no expected argument list for this method To start off with, anonymous functions in PHP are instances of the internal Closure class.
You probably tried something like passing a Closure to the expectation handler that was identical to the one being passed in the code.

I don’t like manually creating a table of contents on Github so this is how I figured out how to generate it.
1. Install npm See the docs for installation insturctions
If on linux:
apt-get install npm You may have to run the below command if you installed via a package manager:
ln -s /usr/bin/nodejs /usr/bin/node 2. Install doctoc You may have to use sudo to install.
npm install -g doctoc 3.