Loading src/Action/Functions.php +9 −10 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class Functions * @param array $array * @return array */ public function sortPrice(array $array): array { $prices = array_column($array, 'price'); Loading Loading @@ -157,7 +158,6 @@ class Functions return (int)$dateInterval->format("%a") + 1; } /** * Вернет все пятницы 13 в году * @param int $year год, в котором необходимо произвести расчет Loading Loading @@ -188,4 +188,3 @@ class Functions return (int)$dateInterval->format("%a") ; } } No newline at end of file src/Controller/HomeController.php +21 −5 Original line number Diff line number Diff line Loading @@ -2,20 +2,36 @@ namespace App\Controller; use App\Action\Functions; use App\Validation\DateValidation; use DateInterval; use DatePeriod; use DateTime; use DateTimeImmutable; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { private Functions $functions; private function countFriday13(int $year): iterable { $stardDate = new DateTime("{$year}-01-01 Friday"); $year += 1; $endDate = new DateTime("{$year}-01-01"); $interval = new DateInterval('P7D'); foreach(new DatePeriod($stardDate, $interval, $endDate) as $day) { yield new DateTimeImmutable($day->format("Y-m-d")); } } public function __construct(Functions $functions) #[Route('/{year}', name: 'home')] public function home(int $year): Response { $this->functions = $functions; $fridays = array(); foreach($this->countFriday13($year) as $date) { $fridays[] = $date->format("Y-m-d l"); } return $this->render('home.html.twig', ['fridays' => $fridays]); } #[Route('/{startDate}/{endDate}', name: 'home')] // 01-01-2024 Loading src/Validation/ArrayValidation.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace App\Validation; class ArrayValidation { public static function validateFunc1(array $array): bool { $prices = array_column($array, 'price'); $counts = array_column($array, 'count'); return ctype_digit(implode('',$prices)) && ctype_digit(implode('', $counts)); } public static function validateFunc2(array $array): bool { $ids = array_column($array, 'id'); $ages = array_column($array, 'age'); return ctype_digit(implode('', $ids)) && ctype_digit(implode('', $ages)); } public static function validateFunc4(array $array): bool { $depths = array_column($array, 'depth'); return ctype_digit(implode('', $depths)); } } No newline at end of file Loading
src/Action/Functions.php +9 −10 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ class Functions * @param array $array * @return array */ public function sortPrice(array $array): array { $prices = array_column($array, 'price'); Loading Loading @@ -157,7 +158,6 @@ class Functions return (int)$dateInterval->format("%a") + 1; } /** * Вернет все пятницы 13 в году * @param int $year год, в котором необходимо произвести расчет Loading Loading @@ -188,4 +188,3 @@ class Functions return (int)$dateInterval->format("%a") ; } } No newline at end of file
src/Controller/HomeController.php +21 −5 Original line number Diff line number Diff line Loading @@ -2,20 +2,36 @@ namespace App\Controller; use App\Action\Functions; use App\Validation\DateValidation; use DateInterval; use DatePeriod; use DateTime; use DateTimeImmutable; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { private Functions $functions; private function countFriday13(int $year): iterable { $stardDate = new DateTime("{$year}-01-01 Friday"); $year += 1; $endDate = new DateTime("{$year}-01-01"); $interval = new DateInterval('P7D'); foreach(new DatePeriod($stardDate, $interval, $endDate) as $day) { yield new DateTimeImmutable($day->format("Y-m-d")); } } public function __construct(Functions $functions) #[Route('/{year}', name: 'home')] public function home(int $year): Response { $this->functions = $functions; $fridays = array(); foreach($this->countFriday13($year) as $date) { $fridays[] = $date->format("Y-m-d l"); } return $this->render('home.html.twig', ['fridays' => $fridays]); } #[Route('/{startDate}/{endDate}', name: 'home')] // 01-01-2024 Loading
src/Validation/ArrayValidation.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace App\Validation; class ArrayValidation { public static function validateFunc1(array $array): bool { $prices = array_column($array, 'price'); $counts = array_column($array, 'count'); return ctype_digit(implode('',$prices)) && ctype_digit(implode('', $counts)); } public static function validateFunc2(array $array): bool { $ids = array_column($array, 'id'); $ages = array_column($array, 'age'); return ctype_digit(implode('', $ids)) && ctype_digit(implode('', $ages)); } public static function validateFunc4(array $array): bool { $depths = array_column($array, 'depth'); return ctype_digit(implode('', $depths)); } } No newline at end of file