TypePHP 编译器
https://swoole.com/aot/
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.
83 lines
1.8 KiB
83 lines
1.8 KiB
<?php
|
|
|
|
#[Native]
|
|
class NativeForwardGlobalValue
|
|
{
|
|
public int $value = 42;
|
|
}
|
|
|
|
class NativeForwardGlobalFactory
|
|
{
|
|
public static function create(): NativeForwardGlobalValue
|
|
{
|
|
return new NativeForwardGlobalValue();
|
|
}
|
|
|
|
public static function initialize(): void
|
|
{
|
|
global $nativeForwardGlobal;
|
|
$local = self::create();
|
|
$nativeForwardGlobal = $local;
|
|
}
|
|
}
|
|
|
|
#[Native]
|
|
class NativeForwardGlobalCarrier
|
|
{
|
|
public NativeForwardGlobalValue $value;
|
|
|
|
public function create(): NativeForwardGlobalValue
|
|
{
|
|
return new NativeForwardGlobalValue();
|
|
}
|
|
}
|
|
|
|
function initializeNativeForwardGlobalFromCarrier(NativeForwardGlobalCarrier $carrier): void
|
|
{
|
|
global $nativeForwardGlobal;
|
|
$nativeForwardGlobal = $carrier->create();
|
|
$nativeForwardGlobal = $carrier->value;
|
|
}
|
|
|
|
#[Native]
|
|
class NativeForwardBase
|
|
{
|
|
public int $value = 1;
|
|
}
|
|
|
|
#[Native]
|
|
class NativeForwardLeft extends NativeForwardBase
|
|
{
|
|
}
|
|
|
|
#[Native]
|
|
class NativeForwardRight extends NativeForwardBase
|
|
{
|
|
}
|
|
|
|
function initializeNativeForwardPolymorphic(bool $left): void
|
|
{
|
|
global $nativeForwardPolymorphic;
|
|
$nativeForwardPolymorphic = $left ? new NativeForwardLeft() : new NativeForwardRight();
|
|
}
|
|
|
|
function initializeNativeForwardCoalesced(): void
|
|
{
|
|
global $nativeForwardCoalesced;
|
|
$nativeForwardCoalesced ??= new NativeForwardGlobalValue();
|
|
}
|
|
|
|
function initializeNativeForwardGlobalsArray(): void
|
|
{
|
|
$GLOBALS['nativeForwardGlobalsArray'] = new NativeForwardGlobalValue();
|
|
}
|
|
|
|
const NATIVE_FORWARD_CLOSURE_GLOBAL = 'nativeForwardClosureGlobal';
|
|
|
|
function initializeNativeForwardClosureGlobal(): void
|
|
{
|
|
$initialize = static function (): void {
|
|
$GLOBALS[NATIVE_FORWARD_CLOSURE_GLOBAL] = new NativeForwardGlobalValue();
|
|
};
|
|
$initialize();
|
|
}
|
|
|