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();
Output for git.master_jit, git.master, rfc.property-hooks
Fatal error: Method ValidationError::__construct() cannot declare a return type in /in/ElabY on line 37
Process exited with code 255.

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
141.76 ms | 995 KiB | 7 Q