Skip to content

Commit 2f8ece8

Browse files
committed
Prepare course for show more
1 parent d5fe142 commit 2f8ece8

File tree

5 files changed

+196
-226
lines changed

5 files changed

+196
-226
lines changed

app/School/Course.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace App\School;
4+
5+
class Course
6+
{
7+
public function __construct(
8+
public string $name,
9+
public string $description,
10+
public string $image,
11+
public string $link
12+
)
13+
{
14+
}
15+
}

app/School/Courses.php

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
<?php
2+
3+
namespace App\School;
4+
5+
class Courses
6+
{
7+
/**
8+
* Get the courses items.
9+
*
10+
* @return array
11+
*/
12+
public static function items(): array
13+
{
14+
return [
15+
Teacher::make('Михаил Протасевич', '/img/community/protasevich.jpg', [
16+
new Course(
17+
'Laravel Reverb',
18+
'Современный подход к реализации веб-сокетов на Laravel',
19+
'/img/ui/courses/reverb.svg',
20+
'https://www.youtube.com/playlist?list=PLiOhsP3M5j5wJmOW-pd85abUB3iqpaiZy'
21+
),
22+
new Course(
23+
'Разработка пакета под Laravel',
24+
'От инициализации и тестирования до управления ресурсами',
25+
'/img/ui/courses/chest.svg',
26+
'https://www.youtube.com/playlist?list=PLiOhsP3M5j5x_NCEhb09gnH_RCj-Vflxs'
27+
),
28+
new Course(
29+
'Laravel и его друзья',
30+
'Полезные пакеты, решения и новости',
31+
'/img/ui/courses/laravel.svg',
32+
'https://www.youtube.com/playlist?list=PLiOhsP3M5j5wz0OoYum7LkXTEjKF_Ywb_'
33+
),
34+
]),
35+
36+
Teacher::make('Данил Щуцкий', '/img/community/danil-shutsky.jpg', [
37+
new Course(
38+
'Отношения в Eloquent',
39+
'Основы применения различных связей',
40+
'/img/ui/courses/relationship.svg',
41+
'https://www.youtube.com/playlist?list=PLTucyHptHtTmEUKZhY40SrXPhUuPdp1bD'
42+
),
43+
new Course(
44+
'Под капотом',
45+
'Как это работает? Давайте погрузимся во внутренности фреймворка',
46+
'/img/ui/courses/chest.svg',
47+
'https://www.youtube.com/playlist?list=PLTucyHptHtTnkmEwK0Yxxl-L9Z_8XOK6c'
48+
),
49+
new Course(
50+
'Laravel с нуля',
51+
'Воплотите свои идеи после руководство для абсолютных новичков',
52+
'/img/ui/courses/laravel.svg',
53+
'https://www.youtube.com/playlist?list=PLTucyHptHtTkUbXaikXEmCWL8GradRx9I'
54+
),
55+
new Course(
56+
'MoonShine 2',
57+
'Установка и применение админ-панели по шагам наглядно и понятно',
58+
'/img/ui/courses/moonshine.svg',
59+
'https://www.youtube.com/playlist?list=PLTucyHptHtTnFB4pLj1FpqEMwu7qv3xbG'
60+
),
61+
]),
62+
63+
Teacher::make('Максим Орлов', '/img/community/orlov.jpg', [
64+
new Course(
65+
'Деплой',
66+
'Деплой (CI/CD) Laravel на хостинг автоматически (3 способа)',
67+
'/img/ui/courses/deploy.svg',
68+
'https://www.youtube.com/playlist?list=PLXCVm4GFpx5BNlRCGZqVFK1IMUampm3Q_'
69+
),
70+
new Course(
71+
'Laravel',
72+
'Рассмотрим все возможности фреймворка на 2023 год.',
73+
'/img/ui/courses/laravel.svg',
74+
'https://www.youtube.com/playlist?list=PLXCVm4GFpx5CZf4X5ppNJTPsaGwSlBXLX'
75+
),
76+
new Course(
77+
'Laravel Helpers',
78+
'Мои функции хелперы с которыми я работаю ежедневно.',
79+
'/img/ui/courses/helpers.svg',
80+
'https://www.youtube.com/playlist?list=PLXCVm4GFpx5DMQeuzyQwZW8QtslxsUxFy'
81+
),
82+
new Course(
83+
'Tailwind',
84+
'Верстаем ВКонтакте с помощью инструмента Tailwind',
85+
'/img/ui/courses/tailwind.svg',
86+
'https://www.youtube.com/playlist?list=PLXCVm4GFpx5AjF_3jMD6tsDI6eS-yc92U'
87+
),
88+
]),
89+
90+
Teacher::make('Дмитрий Афанасьев', '/img/community/afanasyev.jpg', [
91+
new Course(
92+
'Git',
93+
'Обязательно знать и уметь применять систему контроля версий',
94+
'/img/ui/courses/git.svg',
95+
'https://www.youtube.com/playlist?list=PLoonZ8wII66iUm84o7nadL-oqINzBLk5g'
96+
),
97+
new Course(
98+
'Эксперт PHP',
99+
'В курсе будут рассмотрены наиболее популярные функции и механики языка PHP.',
100+
'/img/ui/courses/php.svg',
101+
'https://www.youtube.com/playlist?list=PLoonZ8wII66iZSicLNXhE4bxUYaKhIc-L'
102+
),
103+
new Course(
104+
'Основы Laravel',
105+
'Пошаговый видеокурс по фреймворку Laravel. Версии фреймворка используемые в курсе: 5.7.2 - 8.*',
106+
'/img/ui/courses/laravel.svg',
107+
'https://www.youtube.com/playlist?list=PLoonZ8wII66iP0fJPHhkLXa3k7CMef9ak'
108+
),
109+
new Course(
110+
'Шаблоны проектирования',
111+
'Рассмотрены и реализуйте паттерны на языке PHP.',
112+
'/img/ui/courses/template.svg',
113+
'https://www.youtube.com/playlist?list=PLoonZ8wII66hKbEvIVAZnp1h4CE-4Mtk4'
114+
),
115+
]),
116+
];
117+
}
118+
}

app/School/Teacher.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\School;
4+
5+
use Illuminate\Support\Collection;
6+
7+
class Teacher
8+
{
9+
/**
10+
* @var Collection Courses
11+
*/
12+
public Collection $courses;
13+
14+
public function __construct(public $name, public $image, iterable $courses = [])
15+
{
16+
$this->courses = new Collection($courses);
17+
}
18+
19+
/**
20+
* @param string $name
21+
* @param string $image
22+
* @param iterable $courses
23+
* @return self
24+
*/
25+
public static function make(string $name, string $image, iterable $courses = []): Teacher
26+
{
27+
return new self($name, $image, $courses);
28+
}
29+
30+
/**
31+
* @return $this
32+
*/
33+
public function addCourse(Course $course): self
34+
{
35+
$this->courses->push($course);
36+
37+
return $this;
38+
}
39+
}

0 commit comments

Comments
 (0)