From 5920ee2c4d689355538a5ef532a48cff9be7a1d4 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 06:48:06 +0800
Subject: [PATCH 1/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 .github/workflows/analyse.yaml   | 13 +++++--------
 .github/workflows/audits.yaml    |  8 +++-----
 .github/workflows/coveralls.yaml | 13 +++++--------
 .github/workflows/tests.yaml     |  2 +-
 4 files changed, 14 insertions(+), 22 deletions(-)

diff --git a/.github/workflows/analyse.yaml b/.github/workflows/analyse.yaml
index bf88b59..d3d11b1 100644
--- a/.github/workflows/analyse.yaml
+++ b/.github/workflows/analyse.yaml
@@ -6,22 +6,19 @@ on:
 
 jobs:
   analyse:
-    runs-on: ${{ matrix.os }}
+    runs-on: "ubuntu-latest"
     continue-on-error: ${{ matrix.experimental }}
     strategy:
       matrix:
-        os:
-          - "ubuntu-latest"
-        php:
-          - 8.1
+        php: [8.2]
         experimental:
           - false
 
-    name: PHP${{ matrix.php }} on ${{ matrix.os }}
+    name: PHP:${{ matrix.php }} Code Analysis
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Setup PHP
         uses: shivammathur/setup-php@v2
@@ -43,4 +40,4 @@ jobs:
         run: vendor/bin/pint --test
 
       - name: Execute Static Code Analysis
-        run: vendor/bin/phpstan analyse
+        run: vendor/bin/phpstan analyse --verbose
diff --git a/.github/workflows/audits.yaml b/.github/workflows/audits.yaml
index acb7550..2c05634 100644
--- a/.github/workflows/audits.yaml
+++ b/.github/workflows/audits.yaml
@@ -6,12 +6,10 @@ on:
 
 jobs:
   audit-dependencies:
-    runs-on: ${{ matrix.os }}
+    runs-on: "ubuntu-latest"
     continue-on-error: ${{ matrix.experimental }}
     strategy:
       matrix:
-        os:
-          - "ubuntu-latest"
         php:
           - '8.0'
           - 8.1
@@ -19,11 +17,11 @@ jobs:
         experimental:
           - true
 
-    name: PHP${{ matrix.php }} on ${{ matrix.os }}
+    name: PHP:${{ matrix.php }} Code Audit
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Setup PHP
         uses: shivammathur/setup-php@v2
diff --git a/.github/workflows/coveralls.yaml b/.github/workflows/coveralls.yaml
index 20c2b8b..626fdc0 100644
--- a/.github/workflows/coveralls.yaml
+++ b/.github/workflows/coveralls.yaml
@@ -6,24 +6,21 @@ on:
 
 jobs:
   tests:
-    runs-on: ${{ matrix.os }}
+    runs-on: "ubuntu-latest"
     continue-on-error: ${{ matrix.experimental }}
     strategy:
       matrix:
-        os:
-          - "ubuntu-latest"
-        php:
-          - 8.1
+        php: [8.2]
         dependencies:
           - "highest"
         experimental:
           - false
 
-    name: PHP${{ matrix.php }} on ${{ matrix.os }} (${{ matrix.dependencies }})
+    name: PHP:${{ matrix.php }} Code Coverage
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Setup PHP
         uses: shivammathur/setup-php@v2
@@ -35,7 +32,7 @@ jobs:
       - name: Install dependencies
         uses: "ramsey/composer-install@v3"
         with:
-          dependency-versions: "${{ matrix.dependencies }}"
+          dependency-versions: "highest"
           composer-options: "--prefer-dist --no-cache"
 
       - name: Execute tests
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index f89e726..674024c 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -25,7 +25,7 @@ jobs:
         experimental:
           - false
 
-    name: PHP${{ matrix.php }} on ${{ matrix.os }} (${{ matrix.dependencies }})
+    name: PHP:${{ matrix.php }} / OS:${{ matrix.os }} ${{ matrix.dependencies == 'highest' && '⬆️' || '⬇️' }}
 
     steps:
       - name: Checkout code

From c08d90c3c1328183b2c38c867f4de3b1e5a2aefc Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 06:48:15 +0800
Subject: [PATCH 2/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 .github/workflows/tests.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 674024c..be0a479 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -29,7 +29,7 @@ jobs:
 
     steps:
       - name: Checkout code
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
       - name: Setup PHP
         uses: shivammathur/setup-php@v2

From 78a515eade7940b179de94b02c750da2841ad5a4 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 08:08:27 +0800
Subject: [PATCH 3/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 composer.json                        | 2 +-
 phpstan.neon.dist                    | 2 +-
 src/Console/ComponentMakeCommand.php | 2 +-
 src/Presets/Laravel.php              | 2 +-
 src/Presets/Package.php              | 2 +-
 src/Presets/Preset.php               | 8 ++++----
 tests/Unit/CanvasTest.php            | 4 ++--
 tests/Unit/Presets/PackageTest.php   | 2 +-
 8 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/composer.json b/composer.json
index 6b87d3a..0f4309e 100644
--- a/composer.json
+++ b/composer.json
@@ -39,7 +39,7 @@
         "laravel/framework": "^9.52.15",
         "laravel/pint": "^1.4",
         "mockery/mockery": "^1.5.1",
-        "phpstan/phpstan": "^1.10.5",
+        "phpstan/phpstan": "^1.11",
         "phpunit/phpunit": "^9.5.10",
         "spatie/laravel-ray": "^1.32.4"
     },
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
index ee5e627..495c21f 100644
--- a/phpstan.neon.dist
+++ b/phpstan.neon.dist
@@ -15,8 +15,8 @@ parameters:
   level: 7
 
   ignoreErrors:
+    - identifier: missingType.iterableValue
     - '#Method [a-zA-Z\\\<\>]+::handle\(\) should return bool\|null but returns int.#'
 
   checkGenericClassInNonGenericObjectType: false
-  checkMissingIterableValueType: false
   treatPhpDocTypesAsCertain: false
diff --git a/src/Console/ComponentMakeCommand.php b/src/Console/ComponentMakeCommand.php
index 83751f7..48b762e 100644
--- a/src/Console/ComponentMakeCommand.php
+++ b/src/Console/ComponentMakeCommand.php
@@ -47,7 +47,7 @@ public function afterCodeHasBeenGenerated(string $className, string $path): void
     {
         if ($this->option('view') || ! $this->option('inline')) {
             $this->writeView(function () {
-                $this->components->info(sprintf('View for %s created successfully.', $this->type));
+                $this->components->info(\sprintf('View for %s created successfully.', $this->type));
             });
         }
     }
diff --git a/src/Presets/Laravel.php b/src/Presets/Laravel.php
index 9baac99..6cb467e 100644
--- a/src/Presets/Laravel.php
+++ b/src/Presets/Laravel.php
@@ -67,6 +67,6 @@ public function testingNamespace(): string
      */
     public function getCustomStubPath(): ?string
     {
-        return sprintf('%s/%s', $this->basePath(), 'stubs');
+        return \sprintf('%s/%s', $this->basePath(), 'stubs');
     }
 }
diff --git a/src/Presets/Package.php b/src/Presets/Package.php
index 2c0906f..d2a6b01 100644
--- a/src/Presets/Package.php
+++ b/src/Presets/Package.php
@@ -19,7 +19,7 @@ public function name(): string
      */
     public function sourcePath(): string
     {
-        return sprintf(
+        return \sprintf(
             '%s/%s',
             $this->basePath(),
             $this->config('paths.src', 'src')
diff --git a/src/Presets/Preset.php b/src/Presets/Preset.php
index b8f0636..04f3234 100644
--- a/src/Presets/Preset.php
+++ b/src/Presets/Preset.php
@@ -61,7 +61,7 @@ public function testingPath(): string
      */
     public function resourcePath(): string
     {
-        return sprintf(
+        return \sprintf(
             '%s/%s',
             $this->basePath(),
             $this->config('paths.resource', 'resources')
@@ -73,7 +73,7 @@ public function resourcePath(): string
      */
     public function factoryPath(): string
     {
-        return sprintf(
+        return \sprintf(
             '%s/%s',
             $this->basePath(),
             $this->config('factory.path', 'database/factories')
@@ -85,7 +85,7 @@ public function factoryPath(): string
      */
     public function migrationPath(): string
     {
-        return sprintf(
+        return \sprintf(
             '%s/%s',
             $this->basePath(),
             $this->config('migration.path', 'database/migrations')
@@ -97,7 +97,7 @@ public function migrationPath(): string
      */
     public function seederPath(): string
     {
-        return sprintf(
+        return \sprintf(
             '%s/%s',
             $this->basePath(),
             $this->config('seeder.path', 'database/seeders')
diff --git a/tests/Unit/CanvasTest.php b/tests/Unit/CanvasTest.php
index fdcb6b4..df0c972 100644
--- a/tests/Unit/CanvasTest.php
+++ b/tests/Unit/CanvasTest.php
@@ -13,7 +13,7 @@ class CanvasTest extends TestCase
     /** @test */
     public function it_can_setup_laravel_preset()
     {
-        $files = new Filesystem();
+        $files = new Filesystem;
         $preset = Canvas::preset([
             'preset' => 'laravel',
             'namespace' => 'App',
@@ -36,7 +36,7 @@ public function it_can_setup_laravel_preset()
     /** @test */
     public function it_can_setup_package_preset()
     {
-        $files = new Filesystem();
+        $files = new Filesystem;
         $preset = Canvas::preset([
             'preset' => 'package',
             'namespace' => 'Orchestra\Foundation',
diff --git a/tests/Unit/Presets/PackageTest.php b/tests/Unit/Presets/PackageTest.php
index c8a40d7..5038666 100644
--- a/tests/Unit/Presets/PackageTest.php
+++ b/tests/Unit/Presets/PackageTest.php
@@ -65,7 +65,7 @@ public function it_requires_root_namespace_to_be_configured()
         $this->expectException('InvalidArgumentException');
         $this->expectExceptionMessage("Please configure namespace configuration under 'canvas.yaml'");
         $directory = __DIR__;
-        $preset = new Package([], $directory, new Filesystem());
+        $preset = new Package([], $directory, new Filesystem);
 
         $preset->rootNamespace();
     }

From 9824ad191f28db9d082f003830609c612c8983b6 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 08:15:56 +0800
Subject: [PATCH 4/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 composer.json | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/composer.json b/composer.json
index 0f4309e..618d0fb 100644
--- a/composer.json
+++ b/composer.json
@@ -67,7 +67,10 @@
             "@php vendor/bin/pint",
             "@php vendor/bin/phpstan analyse"
         ],
-        "test": "@php vendor/bin/phpunit -c ./ --color",
+        "test": [
+            "@composer dump-autoload",
+            "@php vendor/bin/phpunit --no-coverage --no-configuration --dont-report-useless-tests --bootstrap vendor/autoload.php --color tests"
+        ],
         "ci": [
             "@prepare",
             "@lint",

From 94f3819097f354cf7a36bfb7279cc9d02fcc07f2 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 08:17:35 +0800
Subject: [PATCH 5/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 composer.json                     | 2 +-
 phpunit.xml                       | 3 ---
 src/Console/PresetMakeCommand.php | 3 +++
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/composer.json b/composer.json
index 618d0fb..6a7a53d 100644
--- a/composer.json
+++ b/composer.json
@@ -69,7 +69,7 @@
         ],
         "test": [
             "@composer dump-autoload",
-            "@php vendor/bin/phpunit --no-coverage --no-configuration --dont-report-useless-tests --bootstrap vendor/autoload.php --color tests"
+            "@php vendor/bin/phpunit --no-coverage --no-configuration --bootstrap vendor/autoload.php --color tests"
         ],
         "ci": [
             "@prepare",
diff --git a/phpunit.xml b/phpunit.xml
index 2e2a381..cc29184 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -16,9 +16,6 @@
         <include>
             <directory suffix=".php">src/</directory>
         </include>
-        <exclude>
-            <file>src/Console/PresetMakeCommand.php</file>
-        </exclude>
     </coverage>
     <testsuites>
         <testsuite name="Canvas Test Suite">
diff --git a/src/Console/PresetMakeCommand.php b/src/Console/PresetMakeCommand.php
index 12dc910..9070244 100644
--- a/src/Console/PresetMakeCommand.php
+++ b/src/Console/PresetMakeCommand.php
@@ -8,6 +8,9 @@
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Input\InputOption;
 
+/**
+ * @codeCoverageIgnore
+ */
 #[AsCommand(name: 'preset', description: 'Create canvas.yaml for the project')]
 class PresetMakeCommand extends GeneratorCommand
 {

From 367bfc5e925defec2ec70c45136e05f9b64efe0c Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 09:19:21 +0800
Subject: [PATCH 6/8] [7.x] Supports PHP 8.3 (#39)

* [7.x] Supports PHP 8.3

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

---------

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 .github/workflows/audits.yaml    | 1 +
 .github/workflows/coveralls.yaml | 2 --
 .github/workflows/tests.yaml     | 1 +
 composer.json                    | 1 +
 4 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/audits.yaml b/.github/workflows/audits.yaml
index 2c05634..1f96a53 100644
--- a/.github/workflows/audits.yaml
+++ b/.github/workflows/audits.yaml
@@ -14,6 +14,7 @@ jobs:
           - '8.0'
           - 8.1
           - 8.2
+          - 8.3
         experimental:
           - true
 
diff --git a/.github/workflows/coveralls.yaml b/.github/workflows/coveralls.yaml
index 626fdc0..11d02f4 100644
--- a/.github/workflows/coveralls.yaml
+++ b/.github/workflows/coveralls.yaml
@@ -11,8 +11,6 @@ jobs:
     strategy:
       matrix:
         php: [8.2]
-        dependencies:
-          - "highest"
         experimental:
           - false
 
diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index be0a479..119f1d7 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -19,6 +19,7 @@ jobs:
           - '8.0'
           - 8.1
           - 8.2
+          - 8.3
         dependencies:
           - "highest"
           - "lowest"
diff --git a/composer.json b/composer.json
index 6a7a53d..5040c2b 100644
--- a/composer.json
+++ b/composer.json
@@ -33,6 +33,7 @@
         "illuminate/support": "^9.52.15",
         "orchestra/canvas-core": "^7.7",
         "orchestra/testbench-core": "^7.31",
+        "symfony/polyfill-php83": "^1.31",
         "symfony/yaml": "^5.4 || ^6.0"
     },
     "require-dev": {

From b47f483dcb6bd1b64bafc3ace308179247818f09 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 14 Nov 2024 09:46:34 +0800
Subject: [PATCH 7/8] [7.] Add `#[\Override]` (#40)

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

* wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>

---------

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 phpstan.neon.dist                        |  2 +-
 src/Console/BatchesTableCommand.php      |  1 +
 src/Console/CastMakeCommand.php          |  3 +++
 src/Console/ChannelMakeCommand.php       |  3 +++
 src/Console/CodeMakeCommand.php          |  2 ++
 src/Console/Commander.php                |  1 +
 src/Console/ComponentMakeCommand.php     |  4 ++++
 src/Console/ConsoleMakeCommand.php       |  4 ++++
 src/Console/ControllerMakeCommand.php    |  6 ++++++
 src/Console/EventMakeCommand.php         |  3 +++
 src/Console/ExceptionMakeCommand.php     |  3 +++
 src/Console/FactoryMakeCommand.php       |  6 ++++++
 src/Console/FailedTableCommand.php       |  1 +
 src/Console/GeneratorMakeCommand.php     |  4 ++++
 src/Console/JobMakeCommand.php           |  3 +++
 src/Console/ListenerMakeCommand.php      |  3 +++
 src/Console/MailMakeCommand.php          |  3 +++
 src/Console/MiddlewareMakeCommand.php    |  3 +++
 src/Console/MigrateMakeCommand.php       |  1 +
 src/Console/ModelMakeCommand.php         | 13 +++++++++++++
 src/Console/NotificationMakeCommand.php  |  3 +++
 src/Console/NotificationTableCommand.php |  1 +
 src/Console/ObserverMakeCommand.php      |  4 ++++
 src/Console/PolicyMakeCommand.php        |  5 +++++
 src/Console/PresetMakeCommand.php        |  4 ++++
 src/Console/ProviderMakeCommand.php      |  4 ++++
 src/Console/QueueTableCommand.php        |  1 +
 src/Console/RequestMakeCommand.php       |  3 +++
 src/Console/ResourceMakeCommand.php      |  3 +++
 src/Console/RuleMakeCommand.php          |  3 +++
 src/Console/ScopeMakeCommand.php         |  4 ++++
 src/Console/SeederMakeCommand.php        |  3 +++
 src/Console/SessionTableCommand.php      |  1 +
 src/Console/TestMakeCommand.php          |  7 +++++--
 src/Console/UserFactoryMakeCommand.php   |  5 +++++
 src/Console/UserModelMakeCommand.php     |  5 +++++
 36 files changed, 122 insertions(+), 3 deletions(-)

diff --git a/phpstan.neon.dist b/phpstan.neon.dist
index 495c21f..d5b7061 100644
--- a/phpstan.neon.dist
+++ b/phpstan.neon.dist
@@ -15,8 +15,8 @@ parameters:
   level: 7
 
   ignoreErrors:
+    # - identifier: missingType.generics
     - identifier: missingType.iterableValue
     - '#Method [a-zA-Z\\\<\>]+::handle\(\) should return bool\|null but returns int.#'
 
-  checkGenericClassInNonGenericObjectType: false
   treatPhpDocTypesAsCertain: false
diff --git a/src/Console/BatchesTableCommand.php b/src/Console/BatchesTableCommand.php
index 1df3f2b..8b4c897 100644
--- a/src/Console/BatchesTableCommand.php
+++ b/src/Console/BatchesTableCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files, Composer $composer)
      * @param  string  $table
      * @return string
      */
+    #[\Override]
     protected function createBaseMigration($table = 'job_batches')
     {
         return $this->createBaseMigrationUsingCanvas($table);
diff --git a/src/Console/CastMakeCommand.php b/src/Console/CastMakeCommand.php
index 7b2b0b3..d6491c8 100644
--- a/src/Console/CastMakeCommand.php
+++ b/src/Console/CastMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/ChannelMakeCommand.php b/src/Console/ChannelMakeCommand.php
index 6bcbd29..dc5cf6f 100644
--- a/src/Console/ChannelMakeCommand.php
+++ b/src/Console/ChannelMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -58,6 +60,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/CodeMakeCommand.php b/src/Console/CodeMakeCommand.php
index f12b0d5..3d4ca70 100644
--- a/src/Console/CodeMakeCommand.php
+++ b/src/Console/CodeMakeCommand.php
@@ -22,6 +22,7 @@ class CodeMakeCommand extends GeneratorCommand
      *
      * @return string
      */
+    #[\Override]
     protected function getStub()
     {
         return $this->resolveStubPath('/stubs/class.stub');
@@ -43,6 +44,7 @@ protected function resolveDefaultStubPath($stub)
      *
      * @return array<int, array>
      */
+    #[\Override]
     protected function getOptions()
     {
         return [
diff --git a/src/Console/Commander.php b/src/Console/Commander.php
index 12c09ea..6e076c3 100644
--- a/src/Console/Commander.php
+++ b/src/Console/Commander.php
@@ -37,6 +37,7 @@ protected function resolveApplicationCallback()
      *
      * @return \Illuminate\Foundation\Application
      */
+    #[\Override]
     public function laravel()
     {
         if (! $this->app instanceof LaravelApplication) {
diff --git a/src/Console/ComponentMakeCommand.php b/src/Console/ComponentMakeCommand.php
index 48b762e..467d4f4 100644
--- a/src/Console/ComponentMakeCommand.php
+++ b/src/Console/ComponentMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -58,6 +59,7 @@ public function afterCodeHasBeenGenerated(string $className, string $path): void
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -68,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
@@ -79,6 +82,7 @@ protected function rootNamespace()
      * @param  string  $path
      * @return string
      */
+    #[\Override]
     protected function viewPath($path = '')
     {
         return $this->viewPathUsingCanvas($path);
diff --git a/src/Console/ConsoleMakeCommand.php b/src/Console/ConsoleMakeCommand.php
index 9f6524d..dc00552 100644
--- a/src/Console/ConsoleMakeCommand.php
+++ b/src/Console/ConsoleMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -58,6 +60,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
@@ -69,6 +72,7 @@ protected function rootNamespace()
      * @param  string  $rootNamespace
      * @return string
      */
+    #[\Override]
     protected function getDefaultNamespace($rootNamespace)
     {
         return rtrim($this->generatorPreset()->commandNamespace(), '\\');
diff --git a/src/Console/ControllerMakeCommand.php b/src/Console/ControllerMakeCommand.php
index 6d05d31..adb812b 100644
--- a/src/Console/ControllerMakeCommand.php
+++ b/src/Console/ControllerMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $model
      * @return string
      */
+    #[\Override]
     protected function qualifyModel(string $model)
     {
         return $this->qualifyModelUsingCanvas($model);
@@ -58,6 +60,7 @@ protected function qualifyModel(string $model)
      *
      * @return array
      */
+    #[\Override]
     protected function buildParentReplacements()
     {
         $parentModelClass = $this->parseModel($this->option('parent'));
@@ -86,6 +89,7 @@ protected function buildParentReplacements()
      * @param  array  $replace
      * @return array
      */
+    #[\Override]
     protected function buildModelReplacements(array $replace)
     {
         $modelClass = $this->parseModel($this->option('model'));
@@ -115,6 +119,7 @@ protected function buildModelReplacements(array $replace)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -125,6 +130,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/EventMakeCommand.php b/src/Console/EventMakeCommand.php
index d69b680..bf44bc7 100644
--- a/src/Console/EventMakeCommand.php
+++ b/src/Console/EventMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/ExceptionMakeCommand.php b/src/Console/ExceptionMakeCommand.php
index 1a41532..2393af3 100644
--- a/src/Console/ExceptionMakeCommand.php
+++ b/src/Console/ExceptionMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/FactoryMakeCommand.php b/src/Console/FactoryMakeCommand.php
index 2dcb792..1fdc9de 100644
--- a/src/Console/FactoryMakeCommand.php
+++ b/src/Console/FactoryMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -59,6 +60,7 @@ protected function resolveDefaultStubPath($stub)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getNamespace($name)
     {
         return rtrim($this->generatorPreset()->factoryNamespace(), '\\');
@@ -78,6 +80,7 @@ protected function getGeneratorSourcePath(): string
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function guessModelName($name)
     {
         if (str_ends_with($name, 'Factory')) {
@@ -93,6 +96,7 @@ protected function guessModelName($name)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -103,6 +107,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
@@ -113,6 +118,7 @@ protected function rootNamespace()
      *
      * @return string|null
      */
+    #[\Override]
     protected function userProviderModel()
     {
         return $this->userProviderModelUsingCanvas();
diff --git a/src/Console/FailedTableCommand.php b/src/Console/FailedTableCommand.php
index 432cf6b..3810419 100644
--- a/src/Console/FailedTableCommand.php
+++ b/src/Console/FailedTableCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files, Composer $composer)
      * @param  string  $table
      * @return string
      */
+    #[\Override]
     protected function createBaseMigration($table = 'failed_jobs')
     {
         return $this->createBaseMigrationUsingCanvas($table);
diff --git a/src/Console/GeneratorMakeCommand.php b/src/Console/GeneratorMakeCommand.php
index 8a3f669..de1e213 100644
--- a/src/Console/GeneratorMakeCommand.php
+++ b/src/Console/GeneratorMakeCommand.php
@@ -27,6 +27,7 @@ class GeneratorMakeCommand extends GeneratorCommand
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function replaceClass($stub, $name)
     {
         $stub = parent::replaceClass($stub, $name);
@@ -42,6 +43,7 @@ protected function replaceClass($stub, $name)
      *
      * @return string
      */
+    #[\Override]
     protected function getStub()
     {
         return $this->resolveStubPath('/stubs/generator.stub');
@@ -64,6 +66,7 @@ protected function resolveDefaultStubPath($stub)
      * @param  string  $rootNamespace
      * @return string
      */
+    #[\Override]
     protected function getDefaultNamespace($rootNamespace)
     {
         return rtrim($this->generatorPreset()->commandNamespace(), '\\');
@@ -74,6 +77,7 @@ protected function getDefaultNamespace($rootNamespace)
      *
      * @return array<int, array>
      */
+    #[\Override]
     protected function getOptions()
     {
         return [
diff --git a/src/Console/JobMakeCommand.php b/src/Console/JobMakeCommand.php
index 36b9c22..186e5ad 100644
--- a/src/Console/JobMakeCommand.php
+++ b/src/Console/JobMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -58,6 +60,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/ListenerMakeCommand.php b/src/Console/ListenerMakeCommand.php
index d1ff512..0f70ed4 100644
--- a/src/Console/ListenerMakeCommand.php
+++ b/src/Console/ListenerMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -58,6 +60,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/MailMakeCommand.php b/src/Console/MailMakeCommand.php
index 363aacb..91d7cb9 100644
--- a/src/Console/MailMakeCommand.php
+++ b/src/Console/MailMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -58,6 +59,7 @@ public function afterCodeHasBeenGenerated(string $className, string $path): void
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -68,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/MiddlewareMakeCommand.php b/src/Console/MiddlewareMakeCommand.php
index f1010e4..ec54f2f 100644
--- a/src/Console/MiddlewareMakeCommand.php
+++ b/src/Console/MiddlewareMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -48,6 +49,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -58,6 +60,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/MigrateMakeCommand.php b/src/Console/MigrateMakeCommand.php
index b5d1b81..d11f5ef 100644
--- a/src/Console/MigrateMakeCommand.php
+++ b/src/Console/MigrateMakeCommand.php
@@ -42,6 +42,7 @@ public function __construct(MigrationCreator $creator, Composer $composer)
      *
      * @return void
      */
+    #[\Override]
     public function handle()
     {
         $preset = $this->generatorPreset();
diff --git a/src/Console/ModelMakeCommand.php b/src/Console/ModelMakeCommand.php
index 342cef1..2621583 100644
--- a/src/Console/ModelMakeCommand.php
+++ b/src/Console/ModelMakeCommand.php
@@ -38,11 +38,15 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
     }
 
+    /**
+     * Run after code successfully generated.
+     */
     protected function afterCodeHasBeenGenerated(): void
     {
         if ($this->option('all')) {
@@ -80,6 +84,7 @@ protected function afterCodeHasBeenGenerated(): void
      *
      * @return void
      */
+    #[\Override]
     protected function createFactory()
     {
         $factory = Str::studly($this->getNameInput());
@@ -95,6 +100,7 @@ protected function createFactory()
      *
      * @return void
      */
+    #[\Override]
     protected function createMigration()
     {
         $table = Str::snake(Str::pluralStudly(class_basename($this->getNameInput())));
@@ -116,6 +122,7 @@ protected function createMigration()
      *
      * @return void
      */
+    #[\Override]
     protected function createSeeder()
     {
         $seeder = Str::studly(class_basename($this->getNameInput()));
@@ -131,6 +138,7 @@ protected function createSeeder()
      *
      * @return void
      */
+    #[\Override]
     protected function createController()
     {
         $controller = Str::studly(class_basename($this->getNameInput()));
@@ -151,6 +159,7 @@ protected function createController()
      *
      * @return void
      */
+    #[\Override]
     protected function createPolicy()
     {
         $policy = Str::studly(class_basename($this->getNameInput()));
@@ -168,6 +177,7 @@ protected function createPolicy()
      * @param  string  $rootNamespace
      * @return string
      */
+    #[\Override]
     protected function getDefaultNamespace($rootNamespace)
     {
         return rtrim($this->generatorPreset()->modelNamespace(), '\\');
@@ -179,6 +189,7 @@ protected function getDefaultNamespace($rootNamespace)
      * @param  string  $model
      * @return string
      */
+    #[\Override]
     protected function qualifyModel(string $model)
     {
         return $this->qualifyModelUsingCanvas($model);
@@ -190,6 +201,7 @@ protected function qualifyModel(string $model)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -200,6 +212,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/NotificationMakeCommand.php b/src/Console/NotificationMakeCommand.php
index 3e02b38..d3c4bdb 100644
--- a/src/Console/NotificationMakeCommand.php
+++ b/src/Console/NotificationMakeCommand.php
@@ -37,6 +37,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -58,6 +59,7 @@ public function afterCodeHasBeenGenerated(string $className, string $path): void
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -68,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/NotificationTableCommand.php b/src/Console/NotificationTableCommand.php
index f238d8b..f1d7155 100644
--- a/src/Console/NotificationTableCommand.php
+++ b/src/Console/NotificationTableCommand.php
@@ -34,6 +34,7 @@ public function __construct(Filesystem $files, Composer $composer)
      *
      * @return string
      */
+    #[\Override]
     protected function createBaseMigration()
     {
         return $this->createBaseMigrationUsingCanvas('notifications');
diff --git a/src/Console/ObserverMakeCommand.php b/src/Console/ObserverMakeCommand.php
index 44ef148..bd44927 100644
--- a/src/Console/ObserverMakeCommand.php
+++ b/src/Console/ObserverMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $model
      * @return string
      */
+    #[\Override]
     protected function qualifyModel(string $model)
     {
         return $this->qualifyModelUsingCanvas($model);
@@ -57,6 +59,7 @@ protected function qualifyModel(string $model)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -67,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/PolicyMakeCommand.php b/src/Console/PolicyMakeCommand.php
index 4b2d87d..22c538e 100644
--- a/src/Console/PolicyMakeCommand.php
+++ b/src/Console/PolicyMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $model
      * @return string
      */
+    #[\Override]
     protected function qualifyModel(string $model)
     {
         return $this->qualifyModelUsingCanvas($model);
@@ -57,6 +59,7 @@ protected function qualifyModel(string $model)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -67,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
@@ -77,6 +81,7 @@ protected function rootNamespace()
      *
      * @return string|null
      */
+    #[\Override]
     protected function userProviderModel()
     {
         /** @var string|null $guard */
diff --git a/src/Console/PresetMakeCommand.php b/src/Console/PresetMakeCommand.php
index 9070244..99bb8b7 100644
--- a/src/Console/PresetMakeCommand.php
+++ b/src/Console/PresetMakeCommand.php
@@ -28,6 +28,7 @@ class PresetMakeCommand extends GeneratorCommand
      *
      * @return string
      */
+    #[\Override]
     protected function getStub()
     {
         $name = Str::lower($this->getNameInput());
@@ -45,6 +46,7 @@ protected function getStub()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->generatorPreset()->basePath().'/canvas.yaml';
@@ -53,6 +55,7 @@ protected function getPath($name)
     /**
      * Get the root namespace for the class.
      */
+    #[\Override]
     protected function rootNamespace(): string
     {
         $namespace = transform($this->option('namespace'), function (string $namespace) {
@@ -77,6 +80,7 @@ protected function rootNamespace(): string
      *
      * @return array<int, array>
      */
+    #[\Override]
     protected function getOptions()
     {
         return [
diff --git a/src/Console/ProviderMakeCommand.php b/src/Console/ProviderMakeCommand.php
index e7a71ea..41ba026 100644
--- a/src/Console/ProviderMakeCommand.php
+++ b/src/Console/ProviderMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
@@ -67,6 +70,7 @@ protected function rootNamespace()
      * @param  string  $rootNamespace
      * @return string
      */
+    #[\Override]
     protected function getDefaultNamespace($rootNamespace)
     {
         return rtrim($this->generatorPreset()->providerNamespace(), '\\');
diff --git a/src/Console/QueueTableCommand.php b/src/Console/QueueTableCommand.php
index ed856fa..27083ab 100644
--- a/src/Console/QueueTableCommand.php
+++ b/src/Console/QueueTableCommand.php
@@ -36,6 +36,7 @@ public function __construct(Filesystem $files, Composer $composer)
      * @param  string  $table
      * @return string
      */
+    #[\Override]
     protected function createBaseMigration($table = 'jobs')
     {
         return $this->createBaseMigrationUsingCanvas($table);
diff --git a/src/Console/RequestMakeCommand.php b/src/Console/RequestMakeCommand.php
index 820f367..6c4eddc 100644
--- a/src/Console/RequestMakeCommand.php
+++ b/src/Console/RequestMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/ResourceMakeCommand.php b/src/Console/ResourceMakeCommand.php
index ab69423..e44d634 100644
--- a/src/Console/ResourceMakeCommand.php
+++ b/src/Console/ResourceMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/RuleMakeCommand.php b/src/Console/RuleMakeCommand.php
index 4881c29..473db56 100644
--- a/src/Console/RuleMakeCommand.php
+++ b/src/Console/RuleMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -56,6 +58,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/ScopeMakeCommand.php b/src/Console/ScopeMakeCommand.php
index 2b30066..88f6d3e 100644
--- a/src/Console/ScopeMakeCommand.php
+++ b/src/Console/ScopeMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -46,6 +47,7 @@ public function handle()
      * @param  string  $model
      * @return string
      */
+    #[\Override]
     protected function qualifyModel(string $model)
     {
         return $this->qualifyModelUsingCanvas($model);
@@ -57,6 +59,7 @@ protected function qualifyModel(string $model)
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -67,6 +70,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->rootNamespaceUsingCanvas();
diff --git a/src/Console/SeederMakeCommand.php b/src/Console/SeederMakeCommand.php
index 36a25ec..3d3af4b 100644
--- a/src/Console/SeederMakeCommand.php
+++ b/src/Console/SeederMakeCommand.php
@@ -35,6 +35,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -54,6 +55,7 @@ protected function getGeneratorSourcePath(): string
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -64,6 +66,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->generatorPreset()->seederNamespace();
diff --git a/src/Console/SessionTableCommand.php b/src/Console/SessionTableCommand.php
index 9cbe0fa..9d0382d 100644
--- a/src/Console/SessionTableCommand.php
+++ b/src/Console/SessionTableCommand.php
@@ -34,6 +34,7 @@ public function __construct(Filesystem $files, Composer $composer)
      *
      * @return string
      */
+    #[\Override]
     protected function createBaseMigration()
     {
         return $this->createBaseMigrationUsingCanvas('sessions');
diff --git a/src/Console/TestMakeCommand.php b/src/Console/TestMakeCommand.php
index 2301cf7..bed2b34 100644
--- a/src/Console/TestMakeCommand.php
+++ b/src/Console/TestMakeCommand.php
@@ -3,7 +3,6 @@
 namespace Orchestra\Canvas\Console;
 
 use Illuminate\Filesystem\Filesystem;
-use Illuminate\Support\Str;
 use Orchestra\Canvas\Core\Concerns\CodeGenerator;
 use Orchestra\Canvas\Core\Concerns\UsesGeneratorOverrides;
 use Orchestra\Canvas\GeneratorPreset;
@@ -37,6 +36,7 @@ public function __construct(Filesystem $files)
      *
      * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
      */
+    #[\Override]
     public function handle()
     {
         return $this->generateCode() ? self::SUCCESS : self::FAILURE;
@@ -74,7 +74,7 @@ protected function replaceTestCase(string $stub, string $testCase): string
     {
         $namespaceTestCase = $testCase = str_replace('/', '\\', $testCase);
 
-        if (Str::startsWith($testCase, '\\')) {
+        if (str_starts_with($testCase, '\\')) {
             $stub = str_replace('NamespacedDummyTestCase', trim($testCase, '\\'), $stub);
         } else {
             $stub = str_replace('NamespacedDummyTestCase', $namespaceTestCase, $stub);
@@ -95,6 +95,7 @@ protected function replaceTestCase(string $stub, string $testCase): string
      * @param  string  $stub
      * @return string
      */
+    #[\Override]
     protected function resolveStubPath($stub)
     {
         $preset = $this->generatorPreset();
@@ -133,6 +134,7 @@ protected function getGeneratorSourcePath(): string
      * @param  string  $name
      * @return string
      */
+    #[\Override]
     protected function getPath($name)
     {
         return $this->getPathUsingCanvas($name);
@@ -143,6 +145,7 @@ protected function getPath($name)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->generatorPreset()->testingNamespace();
diff --git a/src/Console/UserFactoryMakeCommand.php b/src/Console/UserFactoryMakeCommand.php
index 1578524..7d56bb8 100644
--- a/src/Console/UserFactoryMakeCommand.php
+++ b/src/Console/UserFactoryMakeCommand.php
@@ -24,6 +24,7 @@ class UserFactoryMakeCommand extends GeneratorCommand
      *
      * @return string
      */
+    #[\Override]
     protected function getStub()
     {
         return $this->resolveStubPath('/stubs/user-factory.stub');
@@ -45,6 +46,7 @@ protected function resolveDefaultStubPath($stub)
      *
      * @return string
      */
+    #[\Override]
     protected function rootNamespace()
     {
         return $this->generatorPreset()->factoryNamespace();
@@ -81,6 +83,7 @@ public function generatingCode(string $stub, string $className): string
      *
      * @return string
      */
+    #[\Override]
     protected function getNameInput()
     {
         return 'UserFactory';
@@ -91,6 +94,7 @@ protected function getNameInput()
      *
      * @return array
      */
+    #[\Override]
     protected function getArguments()
     {
         return [];
@@ -101,6 +105,7 @@ protected function getArguments()
      *
      * @return array<int, array>
      */
+    #[\Override]
     protected function getOptions()
     {
         return [
diff --git a/src/Console/UserModelMakeCommand.php b/src/Console/UserModelMakeCommand.php
index 105b2b6..4d16b9d 100644
--- a/src/Console/UserModelMakeCommand.php
+++ b/src/Console/UserModelMakeCommand.php
@@ -24,6 +24,7 @@ class UserModelMakeCommand extends GeneratorCommand
      *
      * @return string
      */
+    #[\Override]
     protected function getStub()
     {
         return $this->resolveStubPath('/stubs/user-model.stub');
@@ -43,6 +44,7 @@ protected function resolveDefaultStubPath($stub)
     /**
      * Get the default namespace for the class.
      */
+    #[\Override]
     public function getDefaultNamespace($rootNamespace)
     {
         return rtrim($this->generatorPreset()->modelNamespace(), '\\');
@@ -53,6 +55,7 @@ public function getDefaultNamespace($rootNamespace)
      *
      * @return string
      */
+    #[\Override]
     protected function getNameInput()
     {
         return 'User';
@@ -63,6 +66,7 @@ protected function getNameInput()
      *
      * @return array
      */
+    #[\Override]
     protected function getArguments()
     {
         return [];
@@ -73,6 +77,7 @@ protected function getArguments()
      *
      * @return array<int, array>
      */
+    #[\Override]
     protected function getOptions()
     {
         return [

From 2e47d11d04cc1af5d9d6df817a434c7555716aa3 Mon Sep 17 00:00:00 2001
From: Mior Muhammad Zaki <crynobone@gmail.com>
Date: Thu, 21 Nov 2024 17:32:10 +0800
Subject: [PATCH 8/8] wip

Signed-off-by: Mior Muhammad Zaki <crynobone@gmail.com>
---
 .github/workflows/update-stubs.yaml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/update-stubs.yaml b/.github/workflows/update-stubs.yaml
index 7232875..7c81b61 100644
--- a/.github/workflows/update-stubs.yaml
+++ b/.github/workflows/update-stubs.yaml
@@ -17,7 +17,7 @@ jobs:
       - name: Setup PHP
         uses: shivammathur/setup-php@v2
         with:
-          php-version: 8.2
+          php-version: 8.3
           extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, mysql, mysqli, pdo_mysql, bcmath, intl, fileinfo, :php-psr
           coverage: none