/
uchi-pro
/
api-client-php
Обзор
Документация
Войти
/
uchi-pro
/
api-client-php
Код
Запросы
0
Пакеты
0
Релизы
3
Аналитика
2.6.0
examples/courses_tree.php
70 строк
1 KB
Andrey Gladyshev
docs: причесать примеры
28 май 2022, 22:36
28 май 2022, 22:36
81d09fc
Код
Авторство
О чём код?
<?php /** * Пример построения дерева курсов. */ use UchiPro\{ApiClient, Courses\Course, Identity}; require __DIR__.'/../vendor/autoload.php'; $courses = fetchCourses(); print buildCoursesTree($courses); /** * @param Course[] $courses * * @param ?string $parentId * @param int $level * @param int $i * * @return string */ function buildCoursesTree(iterable $courses, ?string $parentId = null, int $level = 0, int $i = 0): string { $output = ''; $j = 0; foreach ($courses as $course) { if ($course->parentId !== $parentId) { continue; } $j++; $prefix = str_repeat(' ', $level * 2).($i?"$i.":'')."$j. "; $suffix = ''; if ($course->lessonsCount === 0 && !$course->parentId) { $suffix = ' [направление]'; } $output .= $prefix.$course->title.$suffix.PHP_EOL; $output .= buildCoursesTree($courses, $course->id, $level + 1, $j); } return $output; } /** * @return ApiClient */ function getApiClient(): ApiClient { $url = getenv('UCHIPRO_URL'); $login = getenv('UCHIPRO_LOGIN'); $password = getenv('UCHIPRO_PASSWORD'); $identity = Identity::createByLogin($url, $login, $password); return ApiClient::create($identity); } /** * @return array|Course[] */ function fetchCourses(): iterable { $apiClient = getApiClient(); return $apiClient->courses()->findBy(); }