Loading src/Controller/HomeController.php +36 −16 Original line number Diff line number Diff line Loading @@ -5,36 +5,56 @@ namespace App\Controller; use App\Action\Functions; use App\Validation\ArrayValidation; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { private function uniqElements(array $array): array { return array_unique($array, SORT_REGULAR); private Functions $functions; public function __construct(Functions $functions) { $this->functions = $functions; } #[Route('/func1', name: 'home', methods: ['POST'])] public function func1(Request $request): Response { $array = $request->get('arr'); if (!ArrayValidation::validateFunc1($array)) { return new Response("Invalid array"); } $array = $this->functions->sortPrice($array); return $this->json($array); } #[Route('/', name: 'home')] public function home(): Response #[Route('/func2', name: 'func2', methods: ['POST'])] public function func2(Request $request): Response { $arr = [ ['laravel', 'php'], ['codeigniter', 'php'], ['laravel', 'php'], ['c++', 'java'], ]; return $this->json($this->uniqElements($arr)); $id = $request->query->getInt('id'); $array = $request->get('arr'); if (!ArrayValidation::validateFunc2($array)) { return new Response("Invalid array"); } $result = $this->functions->search($array, $id); return $this->json($result); } #[Route('/', name: 'home', methods: ['POST'])] #[Route('/func3', name: 'home', methods: ['POST'])] public function home(Request $request): Response { $array = $request->get('arr'); $errors = ArrayValidation::validate($array); if (count($errors) > 0) { return new Response((string)$errors); $result = $this->functions->uniqElements($array); return $this->json($result); } #[Route('/func4', name: 'home', methods: ['POST'])] public function func4(Request $request): Response { $array = $request->get('arr'); if (!ArrayValidation::validateFunc4($array)) { return new Response("Invalid array"); } $result = $this->functions->prepareMenu($array); return $this->json($result); Loading src/Validation/ArrayValidation.php +3 −14 Original line number Diff line number Diff line Loading @@ -18,20 +18,9 @@ class ArrayValidation return ctype_digit(implode('', $ids)) && ctype_digit(implode('', $ages)); } public static function validate(array $array): ConstraintViolationListInterface public static function validateFunc4(array $array): bool { $validator = Validation::createValidator(); $constraints = new Assert\Optional([ new Assert\Collection([ new Assert\Optional([ new Assert\Type('array'), new Assert\Collection([ 'name' => new Assert\Type('string'), 'depth' => new Assert\Type('int'), ]) ]) ]) ]); return $validator->validate($array, $constraints); $depths = array_column($array, 'depth'); return ctype_digit(implode('', $depths)); } } No newline at end of file Loading
src/Controller/HomeController.php +36 −16 Original line number Diff line number Diff line Loading @@ -5,36 +5,56 @@ namespace App\Controller; use App\Action\Functions; use App\Validation\ArrayValidation; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { private function uniqElements(array $array): array { return array_unique($array, SORT_REGULAR); private Functions $functions; public function __construct(Functions $functions) { $this->functions = $functions; } #[Route('/func1', name: 'home', methods: ['POST'])] public function func1(Request $request): Response { $array = $request->get('arr'); if (!ArrayValidation::validateFunc1($array)) { return new Response("Invalid array"); } $array = $this->functions->sortPrice($array); return $this->json($array); } #[Route('/', name: 'home')] public function home(): Response #[Route('/func2', name: 'func2', methods: ['POST'])] public function func2(Request $request): Response { $arr = [ ['laravel', 'php'], ['codeigniter', 'php'], ['laravel', 'php'], ['c++', 'java'], ]; return $this->json($this->uniqElements($arr)); $id = $request->query->getInt('id'); $array = $request->get('arr'); if (!ArrayValidation::validateFunc2($array)) { return new Response("Invalid array"); } $result = $this->functions->search($array, $id); return $this->json($result); } #[Route('/', name: 'home', methods: ['POST'])] #[Route('/func3', name: 'home', methods: ['POST'])] public function home(Request $request): Response { $array = $request->get('arr'); $errors = ArrayValidation::validate($array); if (count($errors) > 0) { return new Response((string)$errors); $result = $this->functions->uniqElements($array); return $this->json($result); } #[Route('/func4', name: 'home', methods: ['POST'])] public function func4(Request $request): Response { $array = $request->get('arr'); if (!ArrayValidation::validateFunc4($array)) { return new Response("Invalid array"); } $result = $this->functions->prepareMenu($array); return $this->json($result); Loading
src/Validation/ArrayValidation.php +3 −14 Original line number Diff line number Diff line Loading @@ -18,20 +18,9 @@ class ArrayValidation return ctype_digit(implode('', $ids)) && ctype_digit(implode('', $ages)); } public static function validate(array $array): ConstraintViolationListInterface public static function validateFunc4(array $array): bool { $validator = Validation::createValidator(); $constraints = new Assert\Optional([ new Assert\Collection([ new Assert\Optional([ new Assert\Type('array'), new Assert\Collection([ 'name' => new Assert\Type('string'), 'depth' => new Assert\Type('int'), ]) ]) ]) ]); return $validator->validate($array, $constraints); $depths = array_column($array, 'depth'); return ctype_digit(implode('', $depths)); } } No newline at end of file