Skip to content

Commit a3baea6

Browse files
committed
wip
1 parent b491768 commit a3baea6

8 files changed

Lines changed: 38 additions & 113 deletions

File tree

UPGRADE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Upgrade guide
22

3+
## From v5 to v6
4+
5+
In most cases, you don't need to do anything to upgrade, the API has remained the same.
6+
7+
The facade has been moved from `Spatie\Fractal\FractalFacade` to `Spatie\Fractal\Facades\Fractal`.
8+
39
## From v4 to v5
410

511
If you have a configuration file named `laravel-fractal.php`, rename it to `fractal.php` for it to still be used.

composer.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@
2121
}
2222
],
2323
"require": {
24-
"php" : "^8.0",
24+
"php": "^8.0",
2525
"illuminate/contracts": "^9.0",
2626
"illuminate/support": "^9.0",
27-
"spatie/fractalistic": "^2.5"
27+
"spatie/fractalistic": "^2.5",
28+
"spatie/laravel-package-tools": "^1.11"
2829
},
2930
"require-dev": {
3031
"orchestra/testbench": "^7.0",
@@ -56,7 +57,7 @@
5657
"Spatie\\Fractal\\FractalServiceProvider"
5758
],
5859
"aliases": {
59-
"Fractal": "Spatie\\Fractal\\FractalFacade"
60+
"Fractal": "Spatie\\Fractal\\Facades\\Fractal"
6061
}
6162
}
6263
},

src/Console/Commands/TransformerMakeCommand.php

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,43 +6,17 @@
66

77
class TransformerMakeCommand extends GeneratorCommand
88
{
9-
/**
10-
* The name and signature of the console command.
11-
*
12-
* @var string
13-
*/
149
protected $name = 'make:transformer';
1510

16-
/**
17-
* The console command description.
18-
*
19-
* @var string
20-
*/
2111
protected $description = 'Create a new Fractal transformer class';
2212

23-
/**
24-
* The type of class being generated.
25-
*
26-
* @var string
27-
*/
2813
protected $type = 'Transformer';
2914

30-
/**
31-
* Get the stub file for the generator.
32-
*
33-
* @return string
34-
*/
3515
protected function getStub()
3616
{
3717
return __DIR__.'/../stubs/transformer.stub';
3818
}
3919

40-
/**
41-
* Get the default namespace for the class.
42-
*
43-
* @param string $rootNamespace
44-
* @return string
45-
*/
4620
protected function getDefaultNamespace($rootNamespace)
4721
{
4822
return $rootNamespace.'\Transformers';

src/Facades/Fractal.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,7 @@
99
*/
1010
class Fractal extends Facade
1111
{
12-
/**
13-
* Get the registered name of the component.
14-
*
15-
* @return string
16-
*/
17-
protected static function getFacadeAccessor()
12+
protected static function getFacadeAccessor(): string
1813
{
1914
return 'fractal';
2015
}

src/Fractal.php

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
1111
use League\Fractal\Serializer\JsonApiSerializer;
1212
use League\Fractal\Serializer\SerializerAbstract;
13+
use League\Fractal\TransformerAbstract;
1314
use Spatie\Fractalistic\Fractal as Fractalistic;
1415

1516
class Fractal extends Fractalistic
@@ -78,16 +79,11 @@ public static function create($data = null, $transformer = null, $serializer = n
7879
return $fractal->serializeWith(new $serializer());
7980
}
8081

81-
/**
82-
* Return a new JSON response.
83-
*
84-
* @param callable|int $statusCode
85-
* @param callable|array $headers
86-
* @param callable|int $options
87-
*
88-
* @return \Illuminate\Http\JsonResponse
89-
*/
90-
public function respond($statusCode = 200, $headers = [], $options = 0)
82+
public function respond(
83+
callable|int $statusCode = 200,
84+
callable|array $headers = [],
85+
callable|int $options = 0
86+
): JsonResponse
9187
{
9288
$response = new JsonResponse();
9389

src/FractalFacade.php

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/FractalServiceProvider.php

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,57 +7,32 @@
77
use Illuminate\Support\ServiceProvider;
88
use Laravel\Lumen\Application as LumenApplication;
99
use Spatie\Fractal\Console\Commands\TransformerMakeCommand;
10+
use Spatie\LaravelPackageTools\Package;
11+
use Spatie\LaravelPackageTools\PackageServiceProvider;
1012

11-
class FractalServiceProvider extends ServiceProvider
13+
class FractalServiceProvider extends PackageServiceProvider
1214
{
13-
/**
14-
* Bootstrap the application services.
15-
*/
16-
public function boot()
15+
public function configurePackage(Package $package): void
1716
{
18-
$this->setupConfig();
19-
20-
if ($this->app->runningInConsole()) {
21-
$this->commands([
22-
TransformerMakeCommand::class,
23-
]);
24-
}
17+
$package
18+
->name('laravel-fractal')
19+
->hasConfigFile()
20+
->hasCommand(TransformerMakeCommand::class);
21+
}
2522

26-
$this->setupMacro();
23+
public function packageBooted()
24+
{
25+
Collection::macro('transformWith', function ($transformer) {
26+
return fractal($this, $transformer);
27+
});
2728
}
2829

29-
/**
30-
* Register the application services.
31-
*/
32-
public function register()
30+
public function packageRegistered()
3331
{
3432
$this->app->singleton('fractal', function ($app, $arguments) {
3533
return fractal(...$arguments);
3634
});
3735

3836
$this->app->alias('fractal', Fractal::class);
3937
}
40-
41-
protected function setupConfig()
42-
{
43-
$source = realpath(__DIR__.'/../config/fractal.php');
44-
45-
if ($this->app instanceof LaravelApplication) {
46-
$this->publishes([$source => config_path('fractal.php')]);
47-
} elseif ($this->app instanceof LumenApplication) {
48-
$this->app->configure('fractal');
49-
}
50-
51-
$this->mergeConfigFrom($source, 'fractal');
52-
}
53-
54-
/**
55-
* Add a 'transformWith' macro to Laravel's collection.
56-
*/
57-
protected function setupMacro()
58-
{
59-
Collection::macro('transformWith', function ($transformer) {
60-
return fractal($this, $transformer);
61-
});
62-
}
6338
}

tests/FractalFacadeTest.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,23 @@
22

33
namespace Spatie\Fractal\Test;
44

5-
use Fractal as FractalFacade;
65
use League\Fractal\Serializer\DataArraySerializer;
76
use Spatie\Fractalistic\ArraySerializer;
8-
use Spatie\Fractalistic\Fractal;
7+
use Spatie\Fractalistic\Fractal as FractalClass;
8+
use Spatie\Fractal\Facades\Fractal;
99

1010
class FractalFacadeTest extends TestCase
1111
{
1212
/** @test */
1313
public function it_returns_an_instance_of_fractal()
1414
{
15-
$this->assertInstanceOf(Fractal::class, FractalFacade::collection([]));
16-
$this->assertInstanceOf(Fractal::class, \Spatie\Fractal\Facades\Fractal::collection([]));
15+
$this->assertInstanceOf(FractalClass::class, Fractal::collection([]));
1716
}
1817

1918
/** @test */
2019
public function it_can_transform_the_given_array_with_the_given_closure()
2120
{
22-
$transformedData = FractalFacade::collection(['item1', 'item2'], function ($item) {
21+
$transformedData = Fractal::collection(['item1', 'item2'], function ($item) {
2322
return ['item' => $item.'-transformed'];
2423
})->toArray();
2524

@@ -33,7 +32,7 @@ public function it_will_use_the_configured_serializer()
3332
{
3433
$this->app['config']->set('fractal.default_serializer', ArraySerializer::class);
3534

36-
$response = FractalFacade::create()
35+
$response = Fractal::create()
3736
->item($this->testBooks[0])
3837
->transformWith(new TestTransformer())
3938
->respond(200);
@@ -46,7 +45,7 @@ public function it_will_use_the_provided_serializer_instead_of_the_configured_se
4645
{
4746
$this->app['config']->set('fractal.default_serializer', DataArraySerializer::class);
4847

49-
$actualArray = FractalFacade::create($this->testBooks, new TestTransformer(), new ArraySerializer())->toArray();
48+
$actualArray = Fractal::create($this->testBooks, new TestTransformer(), new ArraySerializer())->toArray();
5049

5150
$expectedArray = [
5251
['id' => 1, 'author' => 'Philip K Dick'],

0 commit comments

Comments
 (0)