Skip to content

Commit b4b53e6

Browse files
robinmalburndavidhemphill
authored andcommitted
Fixes the invocation syntax to be PHP 5.x compatible. (#12)
Changes the collection macro's to use a cached version of the factory to improve performance.
1 parent b786bd9 commit b4b53e6

File tree

4 files changed

+20
-14
lines changed

4 files changed

+20
-14
lines changed

helpers.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
*/
1212
function present($model, $presenter)
1313
{
14-
return (new PresenterFactory)($model, $presenter);
14+
$factory = new PresenterFactory;
15+
return $factory($model, $presenter);
1516
}
1617
}

src/Presentable.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ trait Presentable
1313
*/
1414
public function present($presenter)
1515
{
16-
return (new PresenterFactory)($this, $presenter);
16+
$factory = new PresenterFactory;
17+
return $factory($this, $presenter);
1718
}
1819
}

src/PresenterServiceProvider.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@ class PresenterServiceProvider extends ServiceProvider
1010
{
1111
public function boot()
1212
{
13-
Collection::macro('present', function ($class) {
14-
return $this->map(function ($object) use ($class) {
15-
return (new PresenterFactory)($object, $class);
13+
$factory = new PresenterFactory;
14+
15+
Collection::macro('present', function ($class) use ($factory) {
16+
return $this->map(function ($object) use ($class, $factory) {
17+
return $factory($object, $class);
1618
});
1719
});
1820

19-
Collection::macro('presentTransformed', function ($class) {
20-
return $this->transform(function ($object) use ($class) {
21-
return (new PresenterFactory)($object, $class);
21+
Collection::macro('presentTransformed', function ($class) use ($factory) {
22+
return $this->transform(function ($object) use ($class, $factory) {
23+
return $factory($object, $class);
2224
});
2325
});
2426
}

tests/PresenterTest.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,17 @@ public function setupDatabase()
3939

4040
public function registerCollectionMacros()
4141
{
42-
Collection::macro('present', function ($class) {
43-
return $this->map(function ($object) use ($class) {
44-
return (new PresenterFactory)($object, $class);
42+
$factory = new PresenterFactory;
43+
44+
Collection::macro('present', function ($class) use ($factory) {
45+
return $this->map(function ($object) use ($class, $factory) {
46+
return $factory($object, $class);
4547
});
4648
});
4749

48-
Collection::macro('presentTransformed', function ($class) {
49-
return $this->transform(function ($object) use ($class) {
50-
return (new PresenterFactory)($object, $class);
50+
Collection::macro('presentTransformed', function ($class) use ($factory) {
51+
return $this->transform(function ($object) use ($class, $factory) {
52+
return $factory($object, $class);
5153
});
5254
});
5355
}

0 commit comments

Comments
 (0)