<MyRusakov.ru />

Программирование на C++ в Unreal Engine 5

Программирование на C++ в Unreal Engine 5

Данный курс научит Вас созданию игр на C++ в Unreal Engine 5. Курс состоит из 12 разделов, в которых Вас ждёт теория и практика. Причём, в качестве практики будет создан весьма крупный проект объёмом свыше 5000 строк качественного кода, который уже на практике познакомит Вас с принципами создания игр на C++ в Unreal Engine 5.

Параллельно с курсом Вы также будете получать домашние задания, результатом которых станет, в том числе, полноценная серьёзная работа для портфолио.

Помимо самого курса Вас ждёт ещё и очень ценный Бонус: «Тестирование Unreal-проектов на Python», в рамках которого Вы научитесь писать очень полезные тесты для тестирования самых разных аспектов разработки игр.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Простой пример маршрутизации на PHP8 атрибутах

Простой пример маршрутизации на PHP8 атрибутах

Сегодня мы рассмотрим приближенный к реальности пример использования атрибутов в PHP 8. Предположим, что мы разрабатываем веб-приложение и хотим использовать атрибуты для маршрутизации HTTP-запросов. Мы создадим простой фреймворк, который будет использовать атрибуты для определения маршрутов и обработки запросов.

Пример: Маршрутизация с использованием атрибутов

1. Создание атрибутов

Сначала создадим атрибуты для маршрутизации. Мы создадим атрибуты для различных HTTP-методов, таких как GET, POST, PUT, и DELETE.

#[Attribute(Attribute::TARGET_METHOD)]
class Route
{
    public function __construct(public string $path, public string $method) {}
}

#[Attribute(Attribute::TARGET_METHOD)]
class Get extends Route
{
    public function __construct(string $path)
    {
        parent::__construct($path, 'GET');
    }
}

#[Attribute(Attribute::TARGET_METHOD)]
class Post extends Route
{
    public function __construct(string $path)
    {
        parent::__construct($path, 'POST');
    }
}

#[Attribute(Attribute::TARGET_METHOD)]
class Put extends Route
{
    public function __construct(string $path)
    {
        parent::__construct($path, 'PUT');
    }
}

#[Attribute(Attribute::TARGET_METHOD)]
class Delete extends Route
{
    public function __construct(string $path)
    {
        parent::__construct($path, 'DELETE');
    }
}

2. Создание контроллера

Теперь создадим контроллер, который будет использовать эти атрибуты для определения маршрутов.

class UserController
{
    #[Get('/users')]
    public function getUsers()
    {
        return ['user1', 'user2', 'user3'];
    }

    #[Post('/users')]
    public function createUser(array $data)
    {
        // Логика создания пользователя
        return ['status' => 'User created'];
    }

    #[Put('/users/{id}')]
    public function updateUser(int $id, array $data)
    {
        // Логика обновления пользователя
        return ['status' => 'User updated'];
    }

    #[Delete('/users/{id}')]
    public function deleteUser(int $id)
    {
        // Логика удаления пользователя
        return ['status' => 'User deleted'];
    }
}

3. Парсинг атрибутов и обработка запросов

Теперь создадим класс, который будет парсить атрибуты и обрабатывать запросы.

class Router
{
    private array $routes = [];

    public function __construct(private string $controllerClass)
    {
        $this->parseRoutes();
    }

    private function parseRoutes()
    {
        $reflectionClass = new ReflectionClass($this->controllerClass);
        $methods = $reflectionClass->getMethods();

        foreach ($methods as $method) {
            $attributes = $method->getAttributes(Route::class);

            foreach ($attributes as $attribute) {
                $instance = $attribute->newInstance();
                $this->routes[$instance->method][$instance->path] = $method->getName();
            }
        }
    }

    public function dispatch(string $method, string $path)
    {
        if (isset($this->routes[$method][$path])) {
            $methodName = $this->routes[$method][$path];
            $controller = new $this->controllerClass();
            return $controller->$methodName();
        }

        return ['status' => 'Not Found'];
    }
}

4. Использование роутера

Теперь мы можем использовать наш роутер для обработки запросов.

$router = new Router(UserController::class);

// Пример обработки GET-запроса
$response = $router->dispatch('GET', '/users');
print_r($response); // Выведет: Array ( [0] => user1 [1] => user2 [2] => user3 )

// Пример обработки POST-запроса
$response = $router->dispatch('POST', '/users');
print_r($response); // Выведет: Array ( [status] => User created )

Заключение

В этом примере мы создали простой фреймворк для маршрутизации HTTP-запросов с использованием атрибутов в PHP 8. Атрибуты позволяют явно описывать маршруты и методы, что делает код более читаемым и упрощает его поддержку. Этот подход можно расширить и адаптировать для более сложных сценариев и проектов.

Еще больше о PHP можно узнать в моем курсе - Система "PHP и MySQL с Нуля до Гуру 3.0"

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.