PHP code example of sebastiansulinski / laravel-routes
1. Go to this page and download the library: Download sebastiansulinski/laravel-routes library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sebastiansulinski / laravel-routes example snippets
// app/Http/Routes/ModelBindings/BlogBinder.php
namespace App\Http\Routes\ModelBindings;
use Illuminate\Routing\Router;
use SSD\LaravelRoutes\RouteModelBinderContract;
use App\Blog;
class BlogBinder implements RouteModelBinderContract
{
public function bind(Router $router)
{
$router->model('blog_id', Blog::class);
// for version of PHP lower than 5.6 use:
// $router->model('blog_id', 'App\Blog');
$router->bind('blog_slug', function($slug) {
return $this->recordBySlug($slug);
});
}
protected function recordBySlug($slug)
{
return Blog::whereSlug($slug)->firstOrFail();
}
}
// app/Blog.php
namespace App;
class Blog extends Model
{
protected $table = 'blog';
public function scopeWhereSlug($query, $slug)
{
return $query->where('slug', '=', $slug);
}
}
// app/Providers/RouteServiceProvider.php
namespace App\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use SSD\LaravelRoutes\RouteModelBinderFactory;
use App\Http\Routes\ModelBindings\BlogBinder;
class RouteServiceProvider extends ServiceProvider
{
protected $namespace = 'App\Http\Controllers';
public function boot(Router $router)
{
parent::boot($router);
RouteModelBinderFactory::bind(new BlogBinder, $router);
}
public function map(Router $router)
{
$router->group(['namespace' => $this->namespace], function ($router) {
// app/Http/Routes/ModelBindings/BaseBinder.php
namespace App\Http\Routes\ModelBindings;
use Carbon\Carbon;
abstract class BaseBinder {
protected function cache($key, callable $default)
{
$value = app('cache.store')->get($key);
if (is_null($value)) {
$arguments = func_get_args();
$value = call_user_func_array($default, array_splice($arguments, 2));
app('cache.store')->put($key, $value, Carbon::now()->addDay(1));
}
return $value;
}
}
// app/Http/Routes/ModelBindings/BlogBinder.php
namespace App\Http\Routes\ModelBindings;
use Illuminate\Routing\Router;
use SSD\LaravelRoutes\RouteModelBinderContract;
use App\Blog;
class BlogBinder extends BaseBinder implements RouteModelBinderContract
{
public function bind(Router $router)
{
$router->model('blog_id', Blog::class);
$router->bind('blog_slug', function($slug) {
return $this->cache(
'blog.slug.'.$slug,
[
$this,
'recordBySlug'
],
$slug
);
});
}
protected function recordBySlug($slug)
{
return Blog::whereSlug($slug)->firstOrFail();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.