mirror of https://github.com/flightphp/core
Merge pull request #548 from flightphp/php8-named-arguments-support
PHP 8 named arguments supportmaster
commit
22570b9987
@ -0,0 +1,8 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
class ExampleClass
|
||||
{
|
||||
//
|
||||
}
|
@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\PHP8;
|
||||
|
||||
use DateTimeImmutable;
|
||||
use ExampleClass;
|
||||
use Flight;
|
||||
use flight\Container;
|
||||
use flight\Engine;
|
||||
use flight\net\Route;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use stdClass;
|
||||
|
||||
final class FlightTest extends TestCase
|
||||
{
|
||||
private Engine $engine;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->engine = new Engine;
|
||||
Flight::init();
|
||||
Flight::setEngine($this->engine);
|
||||
}
|
||||
|
||||
//////////////////
|
||||
// CORE METHODS //
|
||||
//////////////////
|
||||
public function test_path(): void
|
||||
{
|
||||
Flight::path(dir: __DIR__);
|
||||
|
||||
$exampleObject = new ExampleClass();
|
||||
self::assertInstanceOf(ExampleClass::class, $exampleObject);
|
||||
}
|
||||
|
||||
public function test_stop_with_code(): void
|
||||
{
|
||||
Flight::stop(code: 500);
|
||||
|
||||
self::expectOutputString('');
|
||||
self::assertSame(500, Flight::response()->status());
|
||||
}
|
||||
|
||||
public function test_halt(): void
|
||||
{
|
||||
Flight::halt(actuallyExit: false, code: 500, message: 'Test');
|
||||
|
||||
self::expectOutputString('Test');
|
||||
self::assertSame(500, Flight::response()->status());
|
||||
}
|
||||
|
||||
public function test_register(): void
|
||||
{
|
||||
Flight::register(
|
||||
class: stdClass::class,
|
||||
name: 'customClass',
|
||||
callback: static function (stdClass $object): void {
|
||||
$object->property = 'value';
|
||||
},
|
||||
params: []
|
||||
);
|
||||
|
||||
$object = Flight::customClass();
|
||||
|
||||
self::assertInstanceOf(stdClass::class, $object);
|
||||
self::assertObjectHasProperty('property', $object);
|
||||
self::assertSame('value', $object->property);
|
||||
|
||||
Flight::unregister(methodName: 'customClass');
|
||||
}
|
||||
|
||||
public function test_register_container(): void
|
||||
{
|
||||
$dateTime = new DateTimeImmutable();
|
||||
|
||||
$controller = new class($dateTime) {
|
||||
public function __construct(private DateTimeImmutable $dateTime)
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
public function test(): void
|
||||
{
|
||||
echo $this->dateTime->format('Y-m-d');
|
||||
}
|
||||
};
|
||||
|
||||
Flight::registerContainerHandler(
|
||||
containerHandler: new Container()
|
||||
);
|
||||
|
||||
Flight::request()->url = '/test';
|
||||
|
||||
Flight::route(
|
||||
pass_route: true,
|
||||
alias: 'testRoute',
|
||||
callback: [$controller::class, 'test'],
|
||||
pattern: '/test'
|
||||
);
|
||||
|
||||
self::expectOutputString($dateTime->format('Y-m-d'));
|
||||
|
||||
Flight::start();
|
||||
}
|
||||
|
||||
/////////////////////
|
||||
// ROUTING METHODS //
|
||||
/////////////////////
|
||||
public function test_static_route(): void
|
||||
{
|
||||
Flight::request()->url = '/test';
|
||||
|
||||
$route = Flight::route(
|
||||
pass_route: true,
|
||||
alias: 'testRoute',
|
||||
callback: function () {
|
||||
echo 'test';
|
||||
},
|
||||
pattern: '/test'
|
||||
);
|
||||
|
||||
self::assertInstanceOf(Route::class, $route);
|
||||
self::expectOutputString('test');
|
||||
Flight::start();
|
||||
}
|
||||
}
|
Loading…
Reference in new issue