Skip to content

Instantly share code, notes, and snippets.

@jlem
jlem / MemberInterface.php
Last active October 27, 2015 19:18
Medium Laravel Story - MemberInterface
<?php
interface MemberInterface
{
public function getID();
public function getLoginName();
public function getDisplayName();
public function getPostCount();
public function incrementPostCount();
public function decrementPostCount();
@jlem
jlem / Member.php
Created October 27, 2015 19:15
Medium Laravel Story - Member.php
<?php
class Member extends Model implements MemberInterface
{
const ATTR_DISPLAY_NAME = ‘display_name’;
const ATTR_LOGIN_NAME = ‘login_name’;
const ATTR_POST_COUNT = ‘posts’;
protected $fillable = [
self::ATTR_LOGIN_NAME,
@jlem
jlem / MemberRepositoryInterface.php
Created October 27, 2015 19:20
Medium Laravel Article - MemberRepositoryInterface.php
<?php
interface MemberRepositoryInterface
{
public function find($id);
public function findTopPosters($count = 10);
public function save(MemberInterface $member);
}
@jlem
jlem / EloquentMemberRepository.php
Created October 27, 2015 19:29
Medium Laravel Article - EloquentMemberRepository.php
<?php
class EloquentMemberRepository implements MemberRepositoryInterface
{
/**
* @var Member
*/
protected $model;
@jlem
jlem / ControllerExample.php
Last active October 27, 2015 19:39
Medium Laravel Article - Basic Usage
<?php
DemonstrationController
{
public function createPost(MemberRepositoryInterface $repository)
{
// validate request, create the post, and...
$member = Auth::user()->member();
$member->incrementPostCount();
@jlem
jlem / ControllerExample.php
Created October 27, 2015 19:35
Medium Laravel Article - leaky abstraction example
<?php
DemonstrationController
{
public function createPost()
{
// validate request, create the post, and...
$member = Auth::user()->getMember();
$member->posts++;
@jlem
jlem / ControllerExample.php
Created October 27, 2015 19:38
Medium Laravel Article - leaky hybrid
<?php
DemonstrationController
{
public function createPost()
{
// validate request, create the post, and...
$member = Auth::user()->member();
$member->incrementPostCount();
@jlem
jlem / no_private_state.js
Last active November 11, 2015 21:13
Encapsulation in JS
class Person {
constructor(age) {
this.age = age;
}
}
let person = new Person(15);
person.age = -33;
// This lack of encapsulation and privacy is bad since it makes
@jlem
jlem / SomeServiceProvider.php
Created July 14, 2016 14:03
Getting the queries run on model save
<?php
// in service provider
public function boot()
{
// When the saving event fires on any model...
Event::listen(['eloquent.saving: *'], function() {
// Start listening for database queries...
DB::listen(function($query) {
@jlem
jlem / functional_approach.php
Last active September 21, 2016 01:21
Content slugger
<?php
function makeSlug(Entity $entity)
{
return sprintf("%d-%s", $entity->getID(), str_slug($entity->getName()));
}
/*
Entity with ID 3343 and name of "This Is An Article About Code"
becomes 3343-this-is-an-article-about-code