Submit
Path:
~
/
/
proc
/
self
/
root
/
opt
/
psa
/
admin
/
plib
/
modules
/
monitoring
/
vendor
/
nxp
/
math-executor
/
src
/
NXP
/
Classes
/
File Content:
CustomFunction.php
<?php namespace PleskMonitoring\NXP\Classes; use PleskMonitoring\NXP\Exception\IncorrectNumberOfFunctionParametersException; use ReflectionException; use ReflectionFunction; class CustomFunction { /** * @var callable $function */ public $function; private bool $isVariadic; private int $totalParamCount; private int $requiredParamCount; /** * CustomFunction constructor. * * @throws ReflectionException */ public function __construct(public string $name, callable $function) { $this->function = $function; $reflection = new ReflectionFunction($function); $this->isVariadic = $reflection->isVariadic(); $this->totalParamCount = $reflection->getNumberOfParameters(); $this->requiredParamCount = $reflection->getNumberOfRequiredParameters(); } /** * @param array<Token> $stack * * @throws IncorrectNumberOfFunctionParametersException */ public function execute(array &$stack, int $paramCountInStack) : Token { if ($paramCountInStack < $this->requiredParamCount) { throw new IncorrectNumberOfFunctionParametersException($this->name); } if ($paramCountInStack > $this->totalParamCount && !$this->isVariadic) { throw new IncorrectNumberOfFunctionParametersException($this->name); } $args = []; if ($paramCountInStack > 0) { for ($i = 0; $i < $paramCountInStack; $i++) { \array_unshift($args, \array_pop($stack)->value); } } $result = \call_user_func_array($this->function, $args); return new Token(Token::Literal, $result); } }
Submit
FILE
FOLDER
INFO
Name
Size
Permission
Action
Calculator.php
2971 bytes
0644
CustomFunction.php
1702 bytes
0644
Operator.php
1122 bytes
0644
Token.php
670 bytes
0644
Tokenizer.php
13693 bytes
0644
N4ST4R_ID | Naxtarrr