Skip to content

Commit 18c68d9

Browse files
committed
provider
1 parent 506d592 commit 18c68d9

2 files changed

Lines changed: 31 additions & 15 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Yuges\Subscribable\Exceptions;
4+
5+
use Exception;
6+
use TypeError;
7+
use Yuges\Subscribable\Models\Subscription;
8+
9+
class InvalidSubscription extends Exception
10+
{
11+
public static function doesNotImplementSubscription(string $class): TypeError
12+
{
13+
$subscription = Subscription::class;
14+
15+
return new TypeError("Subscription class `{$class}` must implement `{$subscription}`");
16+
}
17+
}

src/Providers/SubscribableServiceProvider.php

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,30 @@
22

33
namespace Yuges\Subscribable\Providers;
44

5-
use TypeError;
5+
use Yuges\Package\Data\Package;
66
use Yuges\Subscribable\Config\Config;
7-
use Illuminate\Support\ServiceProvider;
87
use Yuges\Subscribable\Models\Subscription;
8+
use Yuges\Package\Providers\PackageServiceProvider;
99
use Yuges\Subscribable\Observers\SubscriptionObserver;
10+
use Yuges\Subscribable\Exceptions\InvalidSubscription;
1011

11-
class SubscribableServiceProvider extends ServiceProvider
12+
class SubscribableServiceProvider extends PackageServiceProvider
1213
{
13-
public function boot(): void
14+
public function configure(Package $package): void
1415
{
15-
$class = Config::getSubscriptionClass(Subscription::class);
16+
$subscription = Config::getSubscriptionClass(Subscription::class);
1617

17-
if (! is_a(new $class, Subscription::class)) {
18-
throw new TypeError('Invalid model');
18+
if (! is_a($subscription, Subscription::class, true)) {
19+
throw InvalidSubscription::doesNotImplementSubscription($subscription);
1920
}
2021

21-
$class::observe(new SubscriptionObserver);
22+
$package
23+
->hasConfig('subscribable')
24+
->hasObserver($subscription, SubscriptionObserver::class);
25+
}
2226

27+
public function packageBooted(): void
28+
{
2329
$this->publishes([
2430
__DIR__.'/../../config/subscribable.php' => config_path('subscribable.php')
2531
], 'subscribable-config');
@@ -32,11 +38,4 @@ public function boot(): void
3238
__DIR__.'/../../database/seeders/' => database_path('seeders')
3339
], 'subscribable-seeders');
3440
}
35-
36-
public function register(): void
37-
{
38-
$this->mergeConfigFrom(
39-
__DIR__.'/../../config/subscribable.php', 'subscribable'
40-
);
41-
}
4241
}

0 commit comments

Comments
 (0)