You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.0 KiB
100 lines
3.0 KiB
<?php
|
|
|
|
/**
|
|
* Slim Framework (https://slimframework.com)
|
|
*
|
|
* @license https://github.com/slimphp/Slim-Psr7/blob/master/LICENSE.md (MIT License)
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
use AdrianSuter\Autoload\Override\Override;
|
|
use Slim\Psr7\Factory;
|
|
use Slim\Psr7\Headers;
|
|
use Slim\Psr7\Message;
|
|
use Slim\Psr7\NonBufferedBody;
|
|
use Slim\Psr7\UploadedFile;
|
|
use Slim\Tests\Psr7\Assets\HeaderStack;
|
|
|
|
$classLoader = require __DIR__ . '/../vendor/autoload.php';
|
|
|
|
Override::apply($classLoader, [
|
|
Headers::class => [
|
|
'getallheaders' => function () {
|
|
if (array_key_exists('getallheaders_return', $GLOBALS)) {
|
|
return $GLOBALS['getallheaders_return'];
|
|
}
|
|
|
|
return getallheaders();
|
|
}
|
|
],
|
|
Message::class => [
|
|
'header' => function (string $string, bool $replace = true, ?int $statusCode = null): void {
|
|
HeaderStack::push(
|
|
[
|
|
'header' => $string,
|
|
'replace' => $replace,
|
|
'status_code' => $statusCode,
|
|
]
|
|
);
|
|
},
|
|
'header_remove' => function ($name = null): void {
|
|
HeaderStack::remove($name);
|
|
}
|
|
],
|
|
NonBufferedBody::class => [
|
|
'ob_get_level' => function (): int {
|
|
if (isset($GLOBALS['ob_get_level_shift'])) {
|
|
return ob_get_level() + $GLOBALS['ob_get_level_shift'];
|
|
}
|
|
|
|
return ob_get_level();
|
|
}
|
|
],
|
|
UploadedFile::class => [
|
|
'copy' => function (string $source, string $destination, $context = null): bool {
|
|
if (isset($GLOBALS['copy_return'])) {
|
|
return $GLOBALS['copy_return'];
|
|
}
|
|
|
|
if ($context === null) {
|
|
return copy($source, $destination);
|
|
}
|
|
return copy($source, $destination, $context);
|
|
},
|
|
'is_uploaded_file' => function (string $filename): bool {
|
|
if (isset($GLOBALS['is_uploaded_file_return'])) {
|
|
return $GLOBALS['is_uploaded_file_return'];
|
|
}
|
|
|
|
return is_uploaded_file($filename);
|
|
},
|
|
'rename' => function (string $oldName, string $newName, $context = null): bool {
|
|
if (isset($GLOBALS['rename_return'])) {
|
|
return $GLOBALS['rename_return'];
|
|
}
|
|
|
|
if ($context === null) {
|
|
return rename($oldName, $newName);
|
|
}
|
|
return rename($oldName, $newName, $context = null);
|
|
}
|
|
],
|
|
Factory\StreamFactory::class => [
|
|
'fopen' => function (string $filename, string $mode) {
|
|
if (isset($GLOBALS['fopen_return'])) {
|
|
return isset($GLOBALS['fopen_return']);
|
|
}
|
|
|
|
return fopen($filename, $mode);
|
|
},
|
|
'is_readable' => function (string $filename) {
|
|
if ($filename === 'non-readable') {
|
|
return false;
|
|
}
|
|
|
|
return is_readable($filename);
|
|
}
|
|
]
|
|
]);
|