From 6651ed43ccd468f8bda0b8ecf8b61b321a19b962 Mon Sep 17 00:00:00 2001 From: Peter Fox Date: Sat, 21 Dec 2024 23:34:10 +0000 Subject: [PATCH] Adds ServerVariableToRequestFacadeRector rule --- docs/rector_rules_overview.md | 15 ++++- .../ServerVariableToRequestFacadeRector.php | 55 +++++++++++++++++++ .../Fixture/fixture.php.inc | 15 +++++ .../skip_dim_fetch_without_dim.php.inc | 7 +++ .../Fixture/skip_non_server_variable.php.inc | 7 +++ ...erverVariableToRequestFacadeRectorTest.php | 31 +++++++++++ .../config/configured_rule.php | 12 ++++ 7 files changed, 141 insertions(+), 1 deletion(-) create mode 100644 src/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector.php create mode 100644 tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/fixture.php.inc create mode 100644 tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_dim_fetch_without_dim.php.inc create mode 100644 tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_non_server_variable.php.inc create mode 100644 tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/ServerVariableToRequestFacadeRectorTest.php create mode 100644 tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/config/configured_rule.php diff --git a/docs/rector_rules_overview.md b/docs/rector_rules_overview.md index 68f9a6ec..f0f192d7 100644 --- a/docs/rector_rules_overview.md +++ b/docs/rector_rules_overview.md @@ -1,4 +1,4 @@ -# 74 Rules Overview +# 75 Rules Overview ## AbortIfRector @@ -1300,6 +1300,19 @@ Use PHP callable syntax instead of string syntax for controller route declaratio
+## ServerVariableToRequestFacadeRector + +Change server variable to Request facade's server method + +- class: [`RectorLaravel\Rector\ArrayDimFetch\ServerVariableToRequestFacadeRector`](../src/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector.php) + +```diff +-$_SERVER['VARIABLE']; ++\Illuminate\Support\Facade\Request::server('VARIABLE'); +``` + +
+ ## SessionVariableToSessionFacadeRector Change PHP session usage to Session Facade methods diff --git a/src/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector.php b/src/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector.php new file mode 100644 index 00000000..7271ce19 --- /dev/null +++ b/src/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector.php @@ -0,0 +1,55 @@ +isName($node->var, '_SERVER')) { + return null; + } + + if ($node->dim === null) { + return null; + } + + return $this->nodeFactory->createStaticCall('Illuminate\Support\Facades\Request', 'server', [ + new Arg($node->dim), + ]); + } +} diff --git a/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/fixture.php.inc b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/fixture.php.inc new file mode 100644 index 00000000..43bb396a --- /dev/null +++ b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/fixture.php.inc @@ -0,0 +1,15 @@ + +----- + diff --git a/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_dim_fetch_without_dim.php.inc b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_dim_fetch_without_dim.php.inc new file mode 100644 index 00000000..281d93b5 --- /dev/null +++ b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_dim_fetch_without_dim.php.inc @@ -0,0 +1,7 @@ + diff --git a/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_non_server_variable.php.inc b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_non_server_variable.php.inc new file mode 100644 index 00000000..2a994cf9 --- /dev/null +++ b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/Fixture/skip_non_server_variable.php.inc @@ -0,0 +1,7 @@ + diff --git a/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/ServerVariableToRequestFacadeRectorTest.php b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/ServerVariableToRequestFacadeRectorTest.php new file mode 100644 index 00000000..4ff9830b --- /dev/null +++ b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/ServerVariableToRequestFacadeRectorTest.php @@ -0,0 +1,31 @@ +doTestFile($filePath); + } + + public function provideConfigFilePath(): string + { + return __DIR__ . '/config/configured_rule.php'; + } +} diff --git a/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/config/configured_rule.php b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/config/configured_rule.php new file mode 100644 index 00000000..5ff492da --- /dev/null +++ b/tests/Rector/ArrayDimFetch/ServerVariableToRequestFacadeRector/config/configured_rule.php @@ -0,0 +1,12 @@ +import(__DIR__ . '/../../../../../config/config.php'); + + $rectorConfig->rule(ServerVariableToRequestFacadeRector::class); +};