heihachi88
5/31/2014 - 10:21 AM

Repository pattern http://culttt.com/2013/07/08/creating-flexible-controllers-in-laravel-4-using-repositories/

"autoload": {
  "classmap": [
    // --
    "app/lib"
  ]
}
// lib/Storage/StorageServiceProvider.php

namespace Storage;
 
use Illuminate\Support\ServiceProvider;
 
class StorageServiceProvider extends ServiceProvider {
 
  public function register()  {
    $this->registerPageRepo();
    $this->registerUserRepo();
  }
  
  public function registerPageRepo() {
    $this->app->bind('Storage\Page\PageRepository', 'Storage\Page\EloquentPageRepository');
  }
  
  public function registerUserRepo() {
    $this->app->bind('Storage\User\UserRepository', 'Storage\User\EloquentUserRepository');
  }
 
}
'providers' => array(
  'Storage\StorageServiceProvider',
),
// lib/Storage/Page/PageRepository.php

namespace Storage\Page;

interface PageRepository {
	public function all();

	public function find($id);

	public function saveCreate($input);
}
// lib/Storage/Page/EloquentPageRepository.php
namespace Storage\Page;

use Page;

class EloquentPageRepository implements PageRepository {
	public function all() {
		return Page::all();
	}

	public function find($id) {
		return Page::find($id);
	}

	public function saveCreate($input) {
		$page = new Page;
		$page->title = $input['title'];
		$page->body = strip_tags($input['body'], '<p><br>');
		$page->slug = $input['slug'];
		$page->save();
	}
}