From 6445cc0b89fd628362cf831a30c22e6e6726eab5 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Sun, 4 Dec 2022 11:18:30 +0100 Subject: [PATCH 1/6] Create InvokableAction.php --- .../src/Framework/Concerns/InvokableAction.php | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 packages/framework/src/Framework/Concerns/InvokableAction.php diff --git a/packages/framework/src/Framework/Concerns/InvokableAction.php b/packages/framework/src/Framework/Concerns/InvokableAction.php new file mode 100644 index 00000000000..7268396d537 --- /dev/null +++ b/packages/framework/src/Framework/Concerns/InvokableAction.php @@ -0,0 +1,10 @@ + Date: Sun, 4 Dec 2022 11:18:57 +0100 Subject: [PATCH 2/6] Add required method stub as abstract --- packages/framework/src/Framework/Concerns/InvokableAction.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/framework/src/Framework/Concerns/InvokableAction.php b/packages/framework/src/Framework/Concerns/InvokableAction.php index 7268396d537..15c02ce3e43 100644 --- a/packages/framework/src/Framework/Concerns/InvokableAction.php +++ b/packages/framework/src/Framework/Concerns/InvokableAction.php @@ -6,5 +6,5 @@ abstract class InvokableAction { - // + abstract public function __invoke(); } From 8a5dc53ca1775fd4eebb74fba0562529af92d79d Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Sun, 4 Dec 2022 11:19:11 +0100 Subject: [PATCH 3/6] Add static call method --- .../framework/src/Framework/Concerns/InvokableAction.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/framework/src/Framework/Concerns/InvokableAction.php b/packages/framework/src/Framework/Concerns/InvokableAction.php index 15c02ce3e43..e8288b568e5 100644 --- a/packages/framework/src/Framework/Concerns/InvokableAction.php +++ b/packages/framework/src/Framework/Concerns/InvokableAction.php @@ -7,4 +7,9 @@ abstract class InvokableAction { abstract public function __invoke(); + + public static function call(...$args) + { + return (new static(...$args))->__invoke(); + } } From 3cd987c1360f7b728b02c71966d8e9fb93d13da3 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Sun, 4 Dec 2022 11:22:36 +0100 Subject: [PATCH 4/6] Add class description --- packages/framework/src/Framework/Concerns/InvokableAction.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/framework/src/Framework/Concerns/InvokableAction.php b/packages/framework/src/Framework/Concerns/InvokableAction.php index e8288b568e5..8170f7b6e99 100644 --- a/packages/framework/src/Framework/Concerns/InvokableAction.php +++ b/packages/framework/src/Framework/Concerns/InvokableAction.php @@ -4,6 +4,9 @@ namespace Hyde\Framework\Concerns; +/** + * Base class for invokable actions. Provides a helper to invoke the action statically. + */ abstract class InvokableAction { abstract public function __invoke(); From 3267b2ec0729f8ecdc405b4c7c64c2fa60fee526 Mon Sep 17 00:00:00 2001 From: Caen De Silva Date: Sun, 4 Dec 2022 11:23:38 +0100 Subject: [PATCH 5/6] Create InvokableActionTest.php --- .../tests/Feature/InvokableActionTest.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 packages/framework/tests/Feature/InvokableActionTest.php diff --git a/packages/framework/tests/Feature/InvokableActionTest.php b/packages/framework/tests/Feature/InvokableActionTest.php new file mode 100644 index 00000000000..8e852204589 --- /dev/null +++ b/packages/framework/tests/Feature/InvokableActionTest.php @@ -0,0 +1,15 @@ + Date: Sun, 4 Dec 2022 11:23:41 +0100 Subject: [PATCH 6/6] Link to the test --- packages/framework/src/Framework/Concerns/InvokableAction.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/framework/src/Framework/Concerns/InvokableAction.php b/packages/framework/src/Framework/Concerns/InvokableAction.php index 8170f7b6e99..8afd7dc3dc2 100644 --- a/packages/framework/src/Framework/Concerns/InvokableAction.php +++ b/packages/framework/src/Framework/Concerns/InvokableAction.php @@ -6,6 +6,8 @@ /** * Base class for invokable actions. Provides a helper to invoke the action statically. + * + * @see \Hyde\Framework\Testing\Feature\InvokableActionTest */ abstract class InvokableAction {