Instantly share code, notes, and snippets.

💭
nerding

Simon Hamp simonhamp

View GitHub Profile
@simonhamp
simonhamp / quotes.md
Last active May 18, 2018
Some quotes and their sources
View quotes.md

"A lot of times, you open up some code for something simple like this, and you find that it is just a massive tangle of unnecessary structure and indirection."

Casey Muratori 2014-05-28 (Retrieved 2018-05-18)

@simonhamp
simonhamp / AppServiceProvider.php
Last active Mar 14, 2018
Laravel: Str::csvToArray macro
View AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\Str;
class AppServiceProvider extends ServiceProvider
{
public function boot()
@simonhamp
simonhamp / VersionMatcher.php
Created Jan 18, 2018
A simple SemVer parser/matcher
View VersionMatcher.php
<?php
class VersionMatcher
{
protected $specificity = 'major';
protected $originals = [];
protected $current;
protected $target;
protected static $padDigits;
@simonhamp
simonhamp / BaseModel.php
Last active Jul 16, 2018
Eloquent: Simple Model Event Handling
View BaseModel.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
/**
* Override the default boot method to register some extra stuff for every child model.
@simonhamp
simonhamp / list.php
Last active Jan 8, 2018
Using list() in foreach in PHP
View list.php
<?php
$items = [
['field' => 'field1', 'values' => [0, 1, 2, 3, 4]],
['field' => 'field2', 'values' => ['cat', 'dog', 'horse']]
];
foreach ($items as list('field' => $field, 'values' => $values)) {
// can use $field and $values here now!
}
@simonhamp
simonhamp / RemoteArtisan.php
Last active Oct 10, 2018
RemoteArtisan: A way to call another Laravel/Lumen application's artisan command from the context of the current application.
View RemoteArtisan.php
<?php
namespace App;
use Dotenv\Dotenv;
use Illuminate\Support\Str;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
class RemoteArtisan
@simonhamp
simonhamp / AuthorizationTest.php
Created Dec 10, 2017
Laravel Testing: Ensure your controllers enforce authorization
View AuthorizationTest.php
<?php
namespace App\Tests;
use Illuminate\Support\Facades\Route;
class AuthorizationTest extends TestCase
{
public function setUp()
{
View str_common.php
<?php
/**
* Return the common parts from 2 strings.
*
* @param string $str1
* @param string $str2
* @param bool $from_end
* return string
*/
View keybase.md

Keybase proof

I hereby claim:

  • I am simonhamp on github.
  • I am simonhamp (https://keybase.io/simonhamp) on keybase.
  • I have a public key ASAHPdAFANeP0F6wuxEQSZ1pduJknbEHdlTnEIcd6CuB8go

To claim this, I am signing this object:

@simonhamp
simonhamp / AppServiceProvider.php
Last active Feb 12, 2019
A pageable Collection implementation for Laravel
View AppServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Support\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
class AppServiceProvider extends ServiceProvider
{
public function boot()