hypertube-binaries 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Binaries/Clr/Hypertube.Clr.Utils.dll +0 -0
- package/Binaries/Clr/HypertubeClrRuntime.dll +0 -0
- package/Binaries/Jvm/HypertubeJvmRuntime.jar +0 -0
- package/Binaries/Native/Linux/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Linux/{X64/_HypertubeNativeErrorLogger_2026-04-17.txt → ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/Linux/ARM64/libHypertubeActivationService.so +0 -0
- package/Binaries/Native/Linux/ARM64/libHypertubeNetcoreRuntimeNative.so +0 -0
- package/Binaries/Native/Linux/ARM64/libUtils.so +0 -0
- package/Binaries/Native/Linux/ARM64/version.txt +1 -1
- package/Binaries/Native/Linux/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Linux/{ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt → X64/_HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/Linux/X64/libHypertubeActivationService.so +0 -0
- package/Binaries/Native/Linux/X64/libHypertubeNetcoreRuntimeNative.so +0 -0
- package/Binaries/Native/Linux/X64/libHypertubeNodejs2218RuntimeNative.so +0 -0
- package/Binaries/Native/Linux/X64/libUtils.so +0 -0
- package/Binaries/Native/Linux/X64/version.txt +1 -1
- package/Binaries/Native/MacOs/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/MacOs/ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeActivationService.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeNetcoreRuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeNodejs2218RuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libUtils.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/version.txt +1 -1
- package/Binaries/Native/MacOs/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/MacOs/X64/{_HypertubeNativeErrorLogger_2026-04-17.txt → _HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/MacOs/X64/libHypertubeActivationService.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libHypertubeNetcoreRuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libHypertubeNodejs2218RuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libUtils.dylib +0 -0
- package/Binaries/Native/MacOs/X64/version.txt +1 -1
- package/Binaries/Native/Windows/ARM64/Configs.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeActivationService.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeCppRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeGoRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeJvmRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeNetcoreRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubePhpRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubePythonRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeRubyRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeTcpClient.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeTcpTlsClient.dll +0 -0
- package/Binaries/Native/Windows/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Windows/ARM64/Utils.dll +0 -0
- package/Binaries/Native/Windows/ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/Windows/ARM64/version.txt +0 -0
- package/Binaries/Native/Windows/X64/Configs.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeActivationService.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeClrRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeCppRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeGoRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeJvmRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNetcoreRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNodejs2218RuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNodejsRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePhp848RuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePhpRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePythonRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeRubyRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeTcpClient.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeTcpTlsClient.dll +0 -0
- package/Binaries/Native/Windows/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Windows/X64/Utils.dll +0 -0
- package/Binaries/Native/Windows/X64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/Windows/X64/version.txt +1 -1
- package/Binaries/Netcore/Hypertube.Netcore.Core.dll +0 -0
- package/Binaries/Netcore/Hypertube.Netcore.Plugins.dll +0 -0
- package/Binaries/Netcore/Hypertube.Netcore.Utils.dll +0 -0
- package/Binaries/Php/hypertube/core/delegatecache/DelegatesCache.php +62 -62
- package/Binaries/Php/hypertube/core/handler/AbstractHandler.php +61 -61
- package/Binaries/Php/hypertube/core/handler/AddEventListenerHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/ArrayGetItemHandler.php +57 -57
- package/Binaries/Php/hypertube/core/handler/ArrayGetRankHandler.php +50 -50
- package/Binaries/Php/hypertube/core/handler/ArrayGetSizeHandler.php +59 -59
- package/Binaries/Php/hypertube/core/handler/ArrayHandler.php +26 -26
- package/Binaries/Php/hypertube/core/handler/ArrayReferenceHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/ArraySetItemHandler.php +87 -87
- package/Binaries/Php/hypertube/core/handler/AsDtoHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/AsKwargsHandler.php +19 -19
- package/Binaries/Php/hypertube/core/handler/AsOutHandler.php +19 -19
- package/Binaries/Php/hypertube/core/handler/AsRefHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/CastHandler.php +93 -93
- package/Binaries/Php/hypertube/core/handler/ContextMetadataHandler.php +20 -0
- package/Binaries/Php/hypertube/core/handler/ConvertTypeHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/CreateInstanceHandler.php +98 -98
- package/Binaries/Php/hypertube/core/handler/CreateNullHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/DestructReferenceHandler.php +29 -29
- package/Binaries/Php/hypertube/core/handler/DtoPropertyHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/EnableNamespaceHandler.php +36 -36
- package/Binaries/Php/hypertube/core/handler/EnableTypeHandler.php +33 -33
- package/Binaries/Php/hypertube/core/handler/ExceptionHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GenerateLibHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetAsyncOperationResultHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumItemHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumNameHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumValueHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetGlobalFieldHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetInstanceFieldHandler.php +55 -55
- package/Binaries/Php/hypertube/core/handler/GetInstanceMethodAsDelegateHandler.php +52 -52
- package/Binaries/Php/hypertube/core/handler/GetModuleHandler.php +15 -15
- package/Binaries/Php/hypertube/core/handler/GetRefValueHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetResultTypeHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetStaticFieldHandler.php +81 -81
- package/Binaries/Php/hypertube/core/handler/GetStaticMethodAsDelegateHandler.php +109 -109
- package/Binaries/Php/hypertube/core/handler/GetTypeHandler.php +146 -146
- package/Binaries/Php/hypertube/core/handler/Handler.php +176 -175
- package/Binaries/Php/hypertube/core/handler/HeartBeatHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/InvokeDelegateHandler.php +27 -27
- package/Binaries/Php/hypertube/core/handler/InvokeGenericMethodHandler.php +47 -47
- package/Binaries/Php/hypertube/core/handler/InvokeGenericStaticMethodHandler.php +111 -111
- package/Binaries/Php/hypertube/core/handler/InvokeGlobalFunctionHandler.php +48 -48
- package/Binaries/Php/hypertube/core/handler/InvokeInstanceMethodHandler.php +78 -78
- package/Binaries/Php/hypertube/core/handler/InvokeStaticMethodHandler.php +95 -95
- package/Binaries/Php/hypertube/core/handler/LoadLibraryHandler.php +360 -360
- package/Binaries/Php/hypertube/core/handler/OptimizeHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/PassByValueHandler.php +103 -103
- package/Binaries/Php/hypertube/core/handler/PassDelegateHandler.php +58 -58
- package/Binaries/Php/hypertube/core/handler/PluginWrapperHandler.php +15 -15
- package/Binaries/Php/hypertube/core/handler/ProjectResultAsDtoHandler.php +68 -68
- package/Binaries/Php/hypertube/core/handler/RegisterForUpdateHandler.php +65 -65
- package/Binaries/Php/hypertube/core/handler/ResolveInstanceHandler.php +27 -27
- package/Binaries/Php/hypertube/core/handler/RetrieveArrayHandler.php +48 -48
- package/Binaries/Php/hypertube/core/handler/SetInstanceFieldHandler.php +54 -54
- package/Binaries/Php/hypertube/core/handler/SetStaticFieldHandler.php +56 -56
- package/Binaries/Php/hypertube/core/handler/ValueForUpdateHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/ValueHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/loadLibrary/ClasspathScanner.php +66 -66
- package/Binaries/Php/hypertube/core/http2Client/Http2Client.php +50 -0
- package/Binaries/Php/hypertube/core/interpreter/Interpreter.php +126 -123
- package/Binaries/Php/hypertube/core/namespacescache/NamespacesCache.php +88 -88
- package/Binaries/Php/hypertube/core/protocol/CommandDeserializer.php +337 -337
- package/Binaries/Php/hypertube/core/protocol/CommandSerializer.php +112 -112
- package/Binaries/Php/hypertube/core/protocol/TypeDeserializer.php +102 -102
- package/Binaries/Php/hypertube/core/protocol/TypeSerializer.php +188 -188
- package/Binaries/Php/hypertube/core/receiver/Receiver.php +45 -45
- package/Binaries/Php/hypertube/core/referencecache/ReferencesCache.php +68 -68
- package/Binaries/Php/hypertube/core/transmitter/Transmitter.php +47 -47
- package/Binaries/Php/hypertube/core/transmitter/TransmitterWrapper.php +181 -181
- package/Binaries/Php/hypertube/core/typescache/TypesCache.php +60 -60
- package/Binaries/Php/hypertube/core/webSocketClient/WebSocketClient.php +626 -620
- package/Binaries/Php/hypertube/utils/ArrayWrapper.php +122 -122
- package/Binaries/Php/hypertube/utils/Command.php +265 -265
- package/Binaries/Php/hypertube/utils/CommandInterface.php +23 -23
- package/Binaries/Php/hypertube/utils/DynamicMethodFactory.php +93 -93
- package/Binaries/Php/hypertube/utils/Enum.php +87 -87
- package/Binaries/Php/hypertube/utils/ExceptionSerializer.php +81 -81
- package/Binaries/Php/hypertube/utils/RuntimeLogger.php +44 -44
- package/Binaries/Php/hypertube/utils/RuntimeName.php +21 -21
- package/Binaries/Php/hypertube/utils/RuntimeNameHandler.php +72 -72
- package/Binaries/Php/hypertube/utils/StringEncodingMode.php +12 -12
- package/Binaries/Php/hypertube/utils/TypesHandler.php +47 -47
- package/Binaries/Php/hypertube/utils/Uri.php +138 -138
- package/Binaries/Php/hypertube/utils/UtilsArray.php +16 -16
- package/Binaries/Php/hypertube/utils/UtilsConst.php +75 -75
- package/Binaries/Php/hypertube/utils/UtilsSimpleType.php +48 -48
- package/Binaries/Php/hypertube/utils/Uuid.php +47 -47
- package/Binaries/Php/hypertube/utils/connectiondata/ConnectionData.php +84 -0
- package/Binaries/Php/hypertube/utils/connectiondata/Http2ConnectionData.php +43 -0
- package/Binaries/Php/hypertube/utils/connectiondata/IConnectionData.php +19 -15
- package/Binaries/Php/hypertube/utils/connectiondata/InMemoryConnectionData.php +25 -35
- package/Binaries/Php/hypertube/utils/connectiondata/TcpConnectionData.php +68 -77
- package/Binaries/Php/hypertube/utils/connectiondata/WsConnectionData.php +43 -43
- package/Binaries/Php/hypertube/utils/error/UnsupportedPayloadItemTypeError.php +19 -19
- package/Binaries/Php/hypertube/utils/exception/BadMethodCallException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/DelegateNotFoundException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/ExceptionThrower.php +121 -121
- package/Binaries/Php/hypertube/utils/exception/FieldNotFoundInClassException.php +41 -41
- package/Binaries/Php/hypertube/utils/exception/HypertubeArgumentsMismatchException.php +17 -17
- package/Binaries/Php/hypertube/utils/exception/InvalidUriException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/SingletonUnserializeException.php +15 -15
- package/Binaries/Php/hypertube/utils/exception/TypeByteNotSupportedException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/TypeNotSupportedException.php +16 -16
- package/Binaries/Php/hypertube/utils/exception/TypeSerializationNotSupportedException.php +18 -18
- package/Binaries/Php/hypertube/utils/exception/UnsupportedOperationException.php +10 -10
- package/Binaries/Php/hypertube/utils/exception/enum/EnumNameNotFoundException.php +15 -15
- package/Binaries/Php/hypertube/utils/exception/enum/InvalidEnumValueException.php +15 -15
- package/Binaries/Php/hypertube/utils/messagehelper/MessageHelper.php +102 -102
- package/Binaries/Php/hypertube/utils/type/CommandType.php +67 -66
- package/Binaries/Php/hypertube/utils/type/ConnectionType.php +15 -14
- package/Binaries/Php/hypertube/utils/type/ExceptionType.php +45 -45
- package/Binaries/Php/hypertube/utils/type/JType.php +24 -24
- package/Binaries/Php/hypertube/utils/type/SizeType.php +22 -22
- package/Binaries/Python/hypertube/core/handler/ContextMetadataHandler.py +7 -0
- package/Binaries/Python/hypertube/core/handler/Handler.py +2 -0
- package/Binaries/Python/hypertube/core/http2Client/Http2Client.py +332 -0
- package/Binaries/Python/hypertube/core/interpreter/Interpreter.py +4 -1
- package/Binaries/Python/hypertube/core/webSocketClient/WebSocketClient.py +81 -25
- package/Binaries/Python/hypertube/utils/CommandType.py +2 -1
- package/Binaries/Python/hypertube/utils/ConnectionType.py +1 -0
- package/Binaries/Python/hypertube/utils/connectionData/Http2ConnectionData.py +36 -0
- package/Binaries/Python/hypertube/utils/connectionData/IConnectionData.py +38 -0
- package/Binaries/Python/hypertube/utils/connectionData/InMemoryConnectionData.py +4 -12
- package/Binaries/Python/hypertube/utils/connectionData/TcpConnectionData.py +4 -15
- package/Binaries/Python/hypertube/utils/connectionData/WsConnectionData.py +14 -12
- package/Binaries/Python/hypertube/utils/messageHelper/MessageHelper.py +20 -15
- package/Binaries/Ruby/core/handler/context_metadata_handler.rb +11 -0
- package/Binaries/Ruby/core/handler/handler.rb +3 -0
- package/Binaries/Ruby/core/http2_client/http2_client.rb +69 -0
- package/Binaries/Ruby/core/interpreter/interpreter.rb +7 -4
- package/Binaries/Ruby/core/web_socket_client/web_socket_client.rb +41 -25
- package/Binaries/Ruby/utils/command_type.rb +3 -0
- package/Binaries/Ruby/utils/connection_type.rb +1 -0
- package/Binaries/Ruby/utils/http2_connection_data.rb +59 -0
- package/Binaries/Ruby/utils/tcp_connection_data.rb +38 -6
- package/Binaries/Ruby/utils/ws_connection_data.rb +40 -6
- package/Binaries/version.txt +1 -1
- package/package.json +1 -1
- package/prebuilds/prebuilds-darwin-arm64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-darwin-x64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-win32-arm64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-win32-x64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/Binaries/Native/Linux/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
- package/Binaries/Native/MacOs/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
- package/Binaries/Native/Windows/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
<?php
|
|
2
|
-
|
|
3
|
-
declare(strict_types=1);
|
|
4
|
-
|
|
5
|
-
namespace core\handler;
|
|
6
|
-
|
|
7
|
-
use BadMethodCallException;
|
|
8
|
-
use ReflectionClass;
|
|
9
|
-
use ReflectionMethod;
|
|
10
|
-
use ReflectionException;
|
|
11
|
-
use RuntimeException;
|
|
12
|
-
use utils\CommandInterface;
|
|
13
|
-
|
|
14
|
-
final class InvokeStaticMethodHandler extends AbstractHandler
|
|
15
|
-
{
|
|
16
|
-
private const REQUIRED_ARGUMENTS_COUNT = 2;
|
|
17
|
-
|
|
18
|
-
public function process(CommandInterface $command)
|
|
19
|
-
{
|
|
20
|
-
$this->validate($command, self::REQUIRED_ARGUMENTS_COUNT, self::class);
|
|
21
|
-
|
|
22
|
-
$payload = $command->getPayload();
|
|
23
|
-
$classToLoad = $payload[0];
|
|
24
|
-
$methodToInvoke = (string) $payload[1];
|
|
25
|
-
$arguments = array_slice($payload, 2);
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
$reflectionClass = $this->getReflectionClass($classToLoad);
|
|
29
|
-
if (!$reflectionClass->hasMethod($methodToInvoke)) {
|
|
30
|
-
$this->throwMethodNotFoundException($reflectionClass->getName(), $methodToInvoke, $arguments, $reflectionClass);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
$method = $reflectionClass->getMethod($methodToInvoke);
|
|
34
|
-
if (!$method->isStatic()) {
|
|
35
|
-
throw new BadMethodCallException(sprintf('Method %s is not static', $methodToInvoke));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return $method->invokeArgs(null, $arguments);
|
|
39
|
-
} catch (ReflectionException $e) {
|
|
40
|
-
throw new RuntimeException(sprintf(
|
|
41
|
-
'Cannot load the class: %s, error: %s',
|
|
42
|
-
$this->getClassName($classToLoad),
|
|
43
|
-
$e->getMessage())
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* @param mixed $classToLoad
|
|
50
|
-
*/
|
|
51
|
-
private function getClassName($classToLoad): string
|
|
52
|
-
{
|
|
53
|
-
if ($classToLoad instanceof ReflectionClass) {
|
|
54
|
-
return $classToLoad->getName();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return is_object($classToLoad) ? get_class($classToLoad) : (string) $classToLoad;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @param mixed $classToLoad
|
|
62
|
-
*/
|
|
63
|
-
private function getReflectionClass($classToLoad): ReflectionClass
|
|
64
|
-
{
|
|
65
|
-
if ($classToLoad instanceof ReflectionClass) {
|
|
66
|
-
return $classToLoad;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return new ReflectionClass($classToLoad);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private function throwMethodNotFoundException(string $className, string $methodName, array $arguments, ReflectionClass $reflectionClass): void
|
|
73
|
-
{
|
|
74
|
-
$methods = $reflectionClass->getMethods(ReflectionMethod::IS_STATIC);
|
|
75
|
-
$message = sprintf('Static method %s with arguments %s was not found in class %s.
|
|
76
|
-
Available static methods:' . PHP_EOL, $methodName, json_encode($arguments), $className
|
|
77
|
-
);
|
|
78
|
-
|
|
79
|
-
foreach ($methods as $method) {
|
|
80
|
-
$params = [];
|
|
81
|
-
foreach ($method->getParameters() as $param) {
|
|
82
|
-
$paramStr = $param->getType() ? $param->getType()->getName() : 'mixed';
|
|
83
|
-
$paramStr .= ' $' . $param->getName();
|
|
84
|
-
if ($param->isOptional()) {
|
|
85
|
-
$paramStr .= ' = ' . ($param->isDefaultValueAvailable() ?
|
|
86
|
-
var_export($param->getDefaultValue(), true) : 'null');
|
|
87
|
-
}
|
|
88
|
-
$params[] = $paramStr;
|
|
89
|
-
}
|
|
90
|
-
$message .= $method->getName() . '(' . implode(', ', $params) . ")\n";
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
throw new BadMethodCallException($message);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
declare(strict_types=1);
|
|
4
|
+
|
|
5
|
+
namespace core\handler;
|
|
6
|
+
|
|
7
|
+
use BadMethodCallException;
|
|
8
|
+
use ReflectionClass;
|
|
9
|
+
use ReflectionMethod;
|
|
10
|
+
use ReflectionException;
|
|
11
|
+
use RuntimeException;
|
|
12
|
+
use utils\CommandInterface;
|
|
13
|
+
|
|
14
|
+
final class InvokeStaticMethodHandler extends AbstractHandler
|
|
15
|
+
{
|
|
16
|
+
private const REQUIRED_ARGUMENTS_COUNT = 2;
|
|
17
|
+
|
|
18
|
+
public function process(CommandInterface $command)
|
|
19
|
+
{
|
|
20
|
+
$this->validate($command, self::REQUIRED_ARGUMENTS_COUNT, self::class);
|
|
21
|
+
|
|
22
|
+
$payload = $command->getPayload();
|
|
23
|
+
$classToLoad = $payload[0];
|
|
24
|
+
$methodToInvoke = (string) $payload[1];
|
|
25
|
+
$arguments = array_slice($payload, 2);
|
|
26
|
+
|
|
27
|
+
try {
|
|
28
|
+
$reflectionClass = $this->getReflectionClass($classToLoad);
|
|
29
|
+
if (!$reflectionClass->hasMethod($methodToInvoke)) {
|
|
30
|
+
$this->throwMethodNotFoundException($reflectionClass->getName(), $methodToInvoke, $arguments, $reflectionClass);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
$method = $reflectionClass->getMethod($methodToInvoke);
|
|
34
|
+
if (!$method->isStatic()) {
|
|
35
|
+
throw new BadMethodCallException(sprintf('Method %s is not static', $methodToInvoke));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return $method->invokeArgs(null, $arguments);
|
|
39
|
+
} catch (ReflectionException $e) {
|
|
40
|
+
throw new RuntimeException(sprintf(
|
|
41
|
+
'Cannot load the class: %s, error: %s',
|
|
42
|
+
$this->getClassName($classToLoad),
|
|
43
|
+
$e->getMessage())
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @param mixed $classToLoad
|
|
50
|
+
*/
|
|
51
|
+
private function getClassName($classToLoad): string
|
|
52
|
+
{
|
|
53
|
+
if ($classToLoad instanceof ReflectionClass) {
|
|
54
|
+
return $classToLoad->getName();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return is_object($classToLoad) ? get_class($classToLoad) : (string) $classToLoad;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @param mixed $classToLoad
|
|
62
|
+
*/
|
|
63
|
+
private function getReflectionClass($classToLoad): ReflectionClass
|
|
64
|
+
{
|
|
65
|
+
if ($classToLoad instanceof ReflectionClass) {
|
|
66
|
+
return $classToLoad;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return new ReflectionClass($classToLoad);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private function throwMethodNotFoundException(string $className, string $methodName, array $arguments, ReflectionClass $reflectionClass): void
|
|
73
|
+
{
|
|
74
|
+
$methods = $reflectionClass->getMethods(ReflectionMethod::IS_STATIC);
|
|
75
|
+
$message = sprintf('Static method %s with arguments %s was not found in class %s.
|
|
76
|
+
Available static methods:' . PHP_EOL, $methodName, json_encode($arguments), $className
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
foreach ($methods as $method) {
|
|
80
|
+
$params = [];
|
|
81
|
+
foreach ($method->getParameters() as $param) {
|
|
82
|
+
$paramStr = $param->getType() ? $param->getType()->getName() : 'mixed';
|
|
83
|
+
$paramStr .= ' $' . $param->getName();
|
|
84
|
+
if ($param->isOptional()) {
|
|
85
|
+
$paramStr .= ' = ' . ($param->isDefaultValueAvailable() ?
|
|
86
|
+
var_export($param->getDefaultValue(), true) : 'null');
|
|
87
|
+
}
|
|
88
|
+
$params[] = $paramStr;
|
|
89
|
+
}
|
|
90
|
+
$message .= $method->getName() . '(' . implode(', ', $params) . ")\n";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
throw new BadMethodCallException($message);
|
|
94
|
+
}
|
|
95
|
+
}
|