Fix autoloading on PHP 5.6 (#11285)
* Add a CI check to ensure the autoloader can run on php5.6+ * Fix autoloading on PHP 5.6pull/11292/head
parent
5165792f9c
commit
0a2846cb24
|
@ -0,0 +1,40 @@
|
||||||
|
name: "Autoloader"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- 'doc/**'
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- 'doc/**'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
name: "Autoloader"
|
||||||
|
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: "Checkout"
|
||||||
|
uses: "actions/checkout@v3"
|
||||||
|
|
||||||
|
- name: "Install Composer dependencies"
|
||||||
|
run: "composer config platform --unset && composer install"
|
||||||
|
|
||||||
|
- name: "Dump autoloader in the test directory using latest Composer"
|
||||||
|
run: "./bin/composer install -d tests/Composer/Test/Autoload/MinimumVersionSupport"
|
||||||
|
|
||||||
|
- name: "Install oldest supported PHP version for autoloader"
|
||||||
|
uses: "shivammathur/setup-php@v2"
|
||||||
|
with:
|
||||||
|
coverage: "none"
|
||||||
|
extensions: "intl, zip"
|
||||||
|
ini-values: "memory_limit=-1"
|
||||||
|
php-version: "5.6"
|
||||||
|
|
||||||
|
- name: "Check the autoloader can be executed"
|
||||||
|
run: "php main.php"
|
||||||
|
working-directory: tests/Composer/Test/Autoload/MinimumVersionSupport
|
|
@ -1029,7 +1029,7 @@ REGISTER_LOADER;
|
||||||
}
|
}
|
||||||
}, null, null);
|
}, null, null);
|
||||||
foreach (\$filesToLoad as \$fileIdentifier => \$file) {
|
foreach (\$filesToLoad as \$fileIdentifier => \$file) {
|
||||||
(\$requireFile)(\$fileIdentifier, \$file);
|
\$requireFile(\$fileIdentifier, \$file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -429,7 +429,8 @@ class ClassLoader
|
||||||
public function loadClass($class)
|
public function loadClass($class)
|
||||||
{
|
{
|
||||||
if ($file = $this->findFile($class)) {
|
if ($file = $this->findFile($class)) {
|
||||||
(self::$includeFile)($file);
|
$includeFile = self::$includeFile;
|
||||||
|
$includeFile($file);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -560,7 +561,10 @@ class ClassLoader
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static function initializeIncludeClosure(): void
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
private static function initializeIncludeClosure()
|
||||||
{
|
{
|
||||||
if (self::$includeFile !== null) {
|
if (self::$includeFile !== null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -40,7 +40,7 @@ class ComposerAutoloaderInitFilesAutoloadOrder
|
||||||
}
|
}
|
||||||
}, null, null);
|
}, null, null);
|
||||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||||
($requireFile)($fileIdentifier, $file);
|
$requireFile($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
|
|
|
@ -40,7 +40,7 @@ class ComposerAutoloaderInitFilesAutoload
|
||||||
}
|
}
|
||||||
}, null, null);
|
}, null, null);
|
||||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||||
($requireFile)($fileIdentifier, $file);
|
$requireFile($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
|
|
|
@ -44,7 +44,7 @@ class ComposerAutoloaderInitFilesAutoload
|
||||||
}
|
}
|
||||||
}, null, null);
|
}, null, null);
|
||||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||||
($requireFile)($fileIdentifier, $file);
|
$requireFile($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
|
|
|
@ -42,7 +42,7 @@ class ComposerAutoloaderInitTargetDir
|
||||||
}
|
}
|
||||||
}, null, null);
|
}, null, null);
|
||||||
foreach ($filesToLoad as $fileIdentifier => $file) {
|
foreach ($filesToLoad as $fileIdentifier => $file) {
|
||||||
($requireFile)($fileIdentifier, $file);
|
$requireFile($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Test;
|
||||||
|
|
||||||
|
class Foo
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function test()
|
||||||
|
{
|
||||||
|
echo 'psr-4 autoloading: OK'.PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"name": "root/pkg",
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"test.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Test\\": "."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include 'vendor/autoload.php';
|
||||||
|
|
||||||
|
Test\Foo::test();
|
||||||
|
|
||||||
|
if (Composer\InstalledVersions::isInstalled('root/pkg')) {
|
||||||
|
echo 'isInstalled: OK'.PHP_EOL;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
echo 'files autoloading: OK'.PHP_EOL;
|
Loading…
Reference in New Issue