| 1 | <?php |
||
| 10 | class ClassDoesNotExtendBaseClass extends InvalidConfig implements ProvidesSolution |
||
| 11 | { |
||
| 12 | protected string $class; |
||
|
|
|||
| 13 | |||
| 14 | protected string $baseClass; |
||
| 15 | |||
| 16 | public static function make(string $class, string $baseClass): self |
||
| 17 | { |
||
| 18 | return (new static("Class {$class} does not extend the `{$baseClass}` base class.")) |
||
| 19 | ->setClass($class) |
||
| 20 | ->setBaseClass($baseClass); |
||
| 21 | } |
||
| 22 | |||
| 23 | public function setClass(string $class): self |
||
| 24 | { |
||
| 25 | $this->class = $class; |
||
| 26 | |||
| 27 | return $this; |
||
| 28 | } |
||
| 29 | |||
| 30 | public function setBaseClass(string $baseClass): self |
||
| 31 | { |
||
| 32 | $this->baseClass = $baseClass; |
||
| 33 | |||
| 34 | return $this; |
||
| 35 | } |
||
| 36 | |||
| 37 | public function getSolution(): Solution |
||
| 38 | { |
||
| 39 | $documentationLinks = Str::endsWith($this->baseClass, 'State') |
||
| 40 | ? ['Configuring states' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-states/01-configuring-states/'] |
||
| 41 | : ['Custom transition classes' => 'https://docs.spatie.be/laravel-model-states/v1/working-with-transitions/02-custom-transition-classes/']; |
||
| 42 | |||
| 43 | return BaseSolution::create('') |
||
| 44 | ->setSolutionDescription("Make sure that `{$this->class}` extends `{$this->baseClass}`") |
||
| 45 | ->setDocumentationLinks($documentationLinks); |
||
| 46 | } |
||
| 47 | } |
||
| 48 |