From 3138c5bcd800bc5d6f2f554b09f1c2d5c07a8b47 Mon Sep 17 00:00:00 2001 From: tabuna Date: Thu, 16 Apr 2020 11:23:16 +0300 Subject: [PATCH] Added support arrow function --- classes/BreadcrumbsGenerator.php | 12 ++++++++++-- tests/AdvancedUsageTest.php | 20 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/classes/BreadcrumbsGenerator.php b/classes/BreadcrumbsGenerator.php index 2f730d7..b73e91c 100644 --- a/classes/BreadcrumbsGenerator.php +++ b/classes/BreadcrumbsGenerator.php @@ -76,10 +76,14 @@ protected function call(string $name, array $params): void * @param string $name The name of the parent page. * @param array ...$params The parameters to pass to the closure. * @throws InvalidBreadcrumbException + * + * @return BreadcrumbsGenerator */ - public function parent(string $name, ...$params): void + public function parent(string $name, ...$params): BreadcrumbsGenerator { $this->call($name, $params); + + return $this; } /** @@ -90,9 +94,13 @@ public function parent(string $name, ...$params): void * @param string $title The title of the page. * @param string|null $url The URL of the page. * @param array $data Optional associative array of additional data to pass to the view. + * + * @return BreadcrumbsGenerator */ - public function push(string $title, string $url = null, array $data = []): void + public function push(string $title, string $url = null, array $data = []): BreadcrumbsGenerator { $this->breadcrumbs->push((object) array_merge($data, compact('title', 'url'))); + + return $this; } } diff --git a/tests/AdvancedUsageTest.php b/tests/AdvancedUsageTest.php index 20e76a2..6fd0c46 100644 --- a/tests/AdvancedUsageTest.php +++ b/tests/AdvancedUsageTest.php @@ -271,4 +271,24 @@ public function testClearCurrentRoute() Breadcrumbs::render(); } + + public function testBreadcrumbsSupportForArrowFunctions() + { + Route::name('home')->get('/', function () { }); + Route::name('blog.index')->get('/blog', function () { }); + + Breadcrumbs::for('home', function ($trail) { + $trail->push('Some Data') + ->push('Another Set'); + }); + + Breadcrumbs::for('blog.index', function ($trail) { + $trail->parent('home') + ->push('Yet Another'); + }); + + $breadcrumbs = Breadcrumbs::generate('blog.index'); + + $this->assertCount(3, $breadcrumbs); + } }