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();
}
}