3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Validator { private $rules; public function __construct($rules) { $this->rules = $rules; } //Код этой функции тоже черновой, потому что я пока что не думал куда всунуть строку "$errorList = new ErrorList;" public function carryOutVerification(Enrollee $enrollee): ErrorList { $errorList = new ErrorList; foreach ($this->rules as $key => $value) { foreach ($value as $key1 => $value1) { $result = $value1($enrollee->get($key)); if (empty($result)==false) { $errorList->add($key); } } } return $errorList; } } /*ValidationError = 1 текст ошибки; если поле не прошло одну проверку - создается один объект, не прошло вторую проверку - создается второй объект с текстом этой ошибки*/ class ValidationError { private string $errorText; public function __construct(string $errorText): void { $this->errorText = $errorText; } use Getter; } /*Каждое поле ErrorList (кроме последнего) - массив, где ключ - 0, 1, 2..., элементы - ссылки на объект ValidationError*/ class ErrorList { private array $name; private array $surname; private array $groupNumber; private array $email; private array $totalPointsUSE; private array $yearOfBirth; //Это поле существует здесь, потому что я не знаю куда его добавить, ведь мне нужно сообщать своей функции (errorListIsEmpty) //По каким именам полей нужно проходиться циклом private $listOfFields = ["name", "surname", "groupNumber", "email", "totalPointsUSE", "yearOfBirth"]; //Этот код изначально взят из VSCode, в котором у меня есть трейты, их код я сюда решил не добавлять use Setter, Getter; public function add(string $field, ValidationError $validationError): void { $this->$field[] = $validationError; } //Я сделал эту функцию приватной, потому что подумал, что она нужна только для работы errorListIsEmpty() private function getListOfFieldErrors(string $field): array { foreach ($this->$field as $key => $value) { $result = $value->get("ErrorText"); if (!empty($result)) { //Я еще не решил каким образом я буду представлять список ошибок для конкретного поля //т.е. код этой функции - черновой $listOfFieldErrors [] = $result; } } return $listOfFieldErrors; } public function errorListIsEmpty(): bool { foreach ($this->listOfFields as $key => $value) { $result = $this->getListOfFieldErrors($value); if (!empty($result)) { return false; } } return true; } } //Внешний код: //$errorList = $validator->carryOutVerification(Enrollee $enrollee); //Проверка на то, нашел ли валидатор ошибки: //$errorList->errorListIsEmpty();

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.00.0100.01028.09
8.2.130.0110.00728.09
8.2.120.0110.00728.09
8.2.110.0060.01228.09
8.2.100.0100.00728.09
8.2.90.0150.00028.09
8.2.80.0130.00728.09
8.2.70.0090.00628.09
8.2.60.0070.00728.09
8.2.50.0060.00928.09
8.2.40.0040.01228.09
8.2.30.0120.00328.09
8.2.20.0040.01128.09
8.2.10.0070.00728.09
8.2.00.0040.00428.09
8.1.260.0040.00428.09
8.1.250.0000.00828.09
8.1.240.0110.00428.09
8.1.230.0070.00728.09
8.1.220.0070.00728.09
8.1.210.0050.00328.09
8.1.200.0090.00028.09
8.1.190.0040.00428.09
8.1.180.0000.00828.09
8.1.170.0040.01128.09
8.1.160.0040.00428.09
8.1.150.0040.00428.09
8.1.140.0030.00528.09
8.1.130.0080.00028.09
8.1.120.0050.00328.09
8.1.110.0030.00528.09
8.1.100.0120.00328.09
8.1.90.0050.00328.09
8.1.80.0080.00028.09
8.1.70.0060.00328.09
8.1.60.0070.00728.09
8.1.50.0080.00028.09
8.1.40.0130.00328.09
8.1.30.0100.00628.09
8.1.20.0040.00428.09
8.1.10.0070.00728.09
8.1.00.0080.00028.09

preferences:
132.87 ms | 993 KiB | 7 Q