Loading public/public/Actions/CountFriday13.php 0 → 100644 +27 −0 Original line number Diff line number Diff line <?php namespace App\Actions; use DateTimeImmutable; class CountFriday13 { /** * Вернет все пятницы 13 в году * @param int $year год, в котором необходимо произвести расчет * @return DateTimeImmutable[] */ public static function count(int $year): array { $AllFri13 = []; for ($i = 1; $i <= 12; $i++) { $next13 = (new DateTimeImmutable())->setDate($year, $i, 13); if ($next13->format("D") === "Fri") { $AllFri13[] = $next13; } } return $AllFri13; } } public/public/Actions/HowDaysToNYAction.php 0 → 100644 +20 −0 Original line number Diff line number Diff line <?php namespace App\Actions; use DateTimeImmutable; class HowDaysToNYAction { /** * Функция рассчитывает кол-во дней до нового года * @param DateTime $date дата от которой, необходимо рассчитать кол-во дней * @return int */ public static function count(DateTimeImmutable $date): int { $dateOfNY = $date->modify('first day of Jan +1 year'); return (int) $dateOfNY->diff($date)->format('%a'); } } No newline at end of file public/public/Actions/SortPriceAction.php 0 → 100644 +27 −0 Original line number Diff line number Diff line <?php namespace App\Actions; class SortPriceAction { /** * Выполняет сортировку массива по убыванию цены * @param array $array * @return array отсортированный */ public static function sort(array $array) { $priceColumn = array_column($array, "price"); $countColumn = array_column($array, "count"); array_multisort( $priceColumn, SORT_DESC, $countColumn, SORT_ASC, $array ); return $array; } } public/public/TestData/TestData.php +25 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,31 @@ class TestData public const START_DATE = "13.04.2024"; public const END_DATE = "13.04.2025"; public const YEAR = 2024; public const PRICE_COUNT_ARRAY = [ [ 'price' => 4, 'count' => 2, ], [ 'price' => 4, 'count' => 1, ], [ 'price' => 2, 'count' => 10, ], [ 'price' => 1, 'count' => 4, ], [ 'price' => 3, 'count' => 4, ], ]; public const RAW_MENU = [ [ 'name' => 'Смартфоны и гаджеты', Loading public/public/index.php +18 −3 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ require_once __DIR__ . '/../vendor/autoload.php'; use App\Actions\DiffDaysAction; use App\Actions\CountFriday13; use App\Actions\HowDaysToNYAction; use App\Actions\SortPriceAction; use App\Actions\IdSearchAction; use App\Actions\PrepareMenuAction; use App\TestData\TestData; Loading @@ -14,10 +17,22 @@ var_dump(DiffDaysAction::count( )); echo '<hr>' echo 'HowDaysToNYAction: <br>'; echo "Дней до нового года (в днях): ". HowDaysToNYAction::count(new DateTimeImmutable()); echo '<hr>'; echo 'SortPriceAction: <br>'; var_dump(SortPriceAction::sort(TestData::PRICE_COUNT_ARRAY)); echo '<hr>'; echo 'PrepareMenuAction: <br>'; var_dump(PrepareMenuAction::prepare(TestData::RAW_MENU)); echo '<hr>' echo '<hr>'; echo 'IdSearchAction: <br>' echo 'IdSearchAction: <br>'; var_dump(IdSearchAction::search(TestData::ARRAY_FOR_SEARCHING)); echo '<hr>' echo '<hr>'; echo 'CountFriday13: <br>'; var_dump(CountFriday13::count(TestData::YEAR)); echo '<hr>'; Loading
public/public/Actions/CountFriday13.php 0 → 100644 +27 −0 Original line number Diff line number Diff line <?php namespace App\Actions; use DateTimeImmutable; class CountFriday13 { /** * Вернет все пятницы 13 в году * @param int $year год, в котором необходимо произвести расчет * @return DateTimeImmutable[] */ public static function count(int $year): array { $AllFri13 = []; for ($i = 1; $i <= 12; $i++) { $next13 = (new DateTimeImmutable())->setDate($year, $i, 13); if ($next13->format("D") === "Fri") { $AllFri13[] = $next13; } } return $AllFri13; } }
public/public/Actions/HowDaysToNYAction.php 0 → 100644 +20 −0 Original line number Diff line number Diff line <?php namespace App\Actions; use DateTimeImmutable; class HowDaysToNYAction { /** * Функция рассчитывает кол-во дней до нового года * @param DateTime $date дата от которой, необходимо рассчитать кол-во дней * @return int */ public static function count(DateTimeImmutable $date): int { $dateOfNY = $date->modify('first day of Jan +1 year'); return (int) $dateOfNY->diff($date)->format('%a'); } } No newline at end of file
public/public/Actions/SortPriceAction.php 0 → 100644 +27 −0 Original line number Diff line number Diff line <?php namespace App\Actions; class SortPriceAction { /** * Выполняет сортировку массива по убыванию цены * @param array $array * @return array отсортированный */ public static function sort(array $array) { $priceColumn = array_column($array, "price"); $countColumn = array_column($array, "count"); array_multisort( $priceColumn, SORT_DESC, $countColumn, SORT_ASC, $array ); return $array; } }
public/public/TestData/TestData.php +25 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,31 @@ class TestData public const START_DATE = "13.04.2024"; public const END_DATE = "13.04.2025"; public const YEAR = 2024; public const PRICE_COUNT_ARRAY = [ [ 'price' => 4, 'count' => 2, ], [ 'price' => 4, 'count' => 1, ], [ 'price' => 2, 'count' => 10, ], [ 'price' => 1, 'count' => 4, ], [ 'price' => 3, 'count' => 4, ], ]; public const RAW_MENU = [ [ 'name' => 'Смартфоны и гаджеты', Loading
public/public/index.php +18 −3 Original line number Diff line number Diff line Loading @@ -3,6 +3,9 @@ require_once __DIR__ . '/../vendor/autoload.php'; use App\Actions\DiffDaysAction; use App\Actions\CountFriday13; use App\Actions\HowDaysToNYAction; use App\Actions\SortPriceAction; use App\Actions\IdSearchAction; use App\Actions\PrepareMenuAction; use App\TestData\TestData; Loading @@ -14,10 +17,22 @@ var_dump(DiffDaysAction::count( )); echo '<hr>' echo 'HowDaysToNYAction: <br>'; echo "Дней до нового года (в днях): ". HowDaysToNYAction::count(new DateTimeImmutable()); echo '<hr>'; echo 'SortPriceAction: <br>'; var_dump(SortPriceAction::sort(TestData::PRICE_COUNT_ARRAY)); echo '<hr>'; echo 'PrepareMenuAction: <br>'; var_dump(PrepareMenuAction::prepare(TestData::RAW_MENU)); echo '<hr>' echo '<hr>'; echo 'IdSearchAction: <br>' echo 'IdSearchAction: <br>'; var_dump(IdSearchAction::search(TestData::ARRAY_FOR_SEARCHING)); echo '<hr>' echo '<hr>'; echo 'CountFriday13: <br>'; var_dump(CountFriday13::count(TestData::YEAR)); echo '<hr>';