Skip to content

Commit cff4a1b

Browse files
authored
fix: Cleanup the autoloader from temporary variables (#866)
The goal here is to reduce the "footprint" of PHP-Scoper and avoid introducing unnecessary conflicts by overriding potential variables.
1 parent 6933d7c commit cff4a1b

File tree

4 files changed

+665
-169
lines changed

4 files changed

+665
-169
lines changed

src/Autoload/ScoperAutoloadGenerator.php

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,42 @@ public function dump(): string
8989
// scoper-autoload.php @generated by PhpScoper
9090
9191
namespace {
92+
\$loader = (static function () {
93+
// Backup the autoloaded Composer files
94+
if (isset(\$GLOBALS['__composer_autoload_files'])) {
95+
\$existingComposerAutoloadFiles = \$GLOBALS['__composer_autoload_files'];
96+
}
97+
98+
\$loader = require_once __DIR__.'/autoload.php';
99+
// Ensure InstalledVersions is available
100+
\$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
101+
if (file_exists(\$installedVersionsPath)) require_once \$installedVersionsPath;
102+
103+
// Restore the backup
104+
if (isset(\$existingComposerAutoloadFiles)) {
105+
\$GLOBALS['__composer_autoload_files'] = \$existingComposerAutoloadFiles;
106+
} else {
107+
unset(\$GLOBALS['__composer_autoload_files']);
108+
}
109+
110+
return \$loader;
111+
})();
112+
}
113+
114+
{$statements}
115+
116+
namespace {
117+
return \$loader;
118+
}
119+
120+
PHP;
121+
} else {
122+
$dump = <<<PHP
123+
<?php
124+
125+
// scoper-autoload.php @generated by PhpScoper
126+
127+
\$loader = (static function () {
92128
// Backup the autoloaded Composer files
93129
if (isset(\$GLOBALS['__composer_autoload_files'])) {
94130
\$existingComposerAutoloadFiles = \$GLOBALS['__composer_autoload_files'];
@@ -105,37 +141,9 @@ public function dump(): string
105141
} else {
106142
unset(\$GLOBALS['__composer_autoload_files']);
107143
}
108-
}
109144
110-
{$statements}
111-
112-
namespace {
113145
return \$loader;
114-
}
115-
116-
PHP;
117-
} else {
118-
$dump = <<<PHP
119-
<?php
120-
121-
// scoper-autoload.php @generated by PhpScoper
122-
123-
// Backup the autoloaded Composer files
124-
if (isset(\$GLOBALS['__composer_autoload_files'])) {
125-
\$existingComposerAutoloadFiles = \$GLOBALS['__composer_autoload_files'];
126-
}
127-
128-
\$loader = require_once __DIR__.'/autoload.php';
129-
// Ensure InstalledVersions is available
130-
\$installedVersionsPath = __DIR__.'/composer/InstalledVersions.php';
131-
if (file_exists(\$installedVersionsPath)) require_once \$installedVersionsPath;
132-
133-
// Restore the backup
134-
if (isset(\$existingComposerAutoloadFiles)) {
135-
\$GLOBALS['__composer_autoload_files'] = \$existingComposerAutoloadFiles;
136-
} else {
137-
unset(\$GLOBALS['__composer_autoload_files']);
138-
}
146+
})();
139147
140148
{$statements}
141149

0 commit comments

Comments
 (0)