Лабораторная работа I. Поднятие окружения. Типовой минимальный проект PHP, HTTP, Composer, ООП и архитектура простого веб-приложения

Поднятие окружения. Типовой минимальный проект:  PHP, HTTP, Composer и работы с базами данных



Работа выполняется с ИИ и(или) ИИ-агентом. Важно разобрать проект и понять что происходит. В данной ЛР важно понимать как поднимать окружение, какие технологии используются и для чего. Понимание глубокое элементов PHP не требуется.


Лабораторная работа 1. PHP, HTTP, Composer, ООП и архитектура простого веб-приложения

Цель: создать первое серверное веб-приложение без использования фреймворка.

Рабочий каталог:

plain-php/

PHP-приложение должно использовать Composer и автозагрузку классов. Composer является стандартным менеджером зависимостей PHP и предоставляет механизм автозагрузки классов. [6]

Задание

  1. Создайте каталог проекта:

mkdir plain-php
cd plain-php
composer init

  1. Настройте в composer.json:

{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}

  1. Выполните:

composer dump-autoload

  1. Создайте структуру:

plain-php/
├── composer.json
├── public/
│ └── index.php
├── src/
│ ├── Http/
│ ├── Controller/
│ ├── Domain/
│ └── Service/
└── tests/

  1. Реализуйте единый front controller:

public/index.php

  1. Реализуйте маршруты:

GET /
GET /health
GET /about
GET /quote

  1. Маршрут /health должен возвращать JSON:

{
"status": "ok",
"php": "...",
"timestamp": "..."
}

  1. Маршрут /quote принимает:

qty
price
discount

Пример:

/quote?qty=10&price=1250&discount=7

  1. Создайте классы:

App\Domain\Money
App\Domain\Quote
App\Service\QuoteCalculator
App\Http\Request
App\Http\Response
App\Controller\QuoteController

  1. Используйте:

declare(strict_types=1);

  1. Используйте:

  2. namespaces;

  3. типы аргументов;

  4. типы возвращаемых значений;

  5. readonly-свойства там, где это оправданно;

  6. исключения для некорректных данных;

  7. DateTimeImmutable.

  8. Цена внутри бизнес-логики должна храниться целым количеством копеек.

  9. Реализуйте правила:

quantity > 0
price > 0
0 <= discount <= 50

  1. Рассчитайте:

subtotal = quantity × price
discountAmount = subtotal × discount / 100
total = subtotal - discountAmount

  1. Создайте HTML-представление расчета.

  2. Экранируйте пользовательские данные перед включением в HTML.

  3. Добавьте обработку:

400 Bad Request
404 Not Found
500 Internal Server Error

  1. Запустите приложение:

php -S localhost:8000 -t public

  1. Проверьте HTTP-запросы:

curl -i http://localhost:8000/health
curl -i "http://localhost:8000/quote?qty=10&amp;price=1250&amp;discount=7&quot;
curl -i "http://localhost:8000/quote?qty=-1&amp;price=1250&amp;discount=7&quot;
curl -i http://localhost:8000/unknown

  1. Установите PHPUnit как dev-зависимость.

  2. Напишите тесты класса QuoteCalculator.

  3. Обязательно проверить:

обычный расчет;
скидка 0%;
скидка 50%;
quantity = 0;
отрицательная цена;
discount > 50.

Обязательный запрос ИИ-аналитику

Ты — архитектор PHP-приложений.

Мне необходимо реализовать учебное PHP 8.4+ приложение без фреймворка,
использующее Composer, PSR-4, ООП и front controller.

Функции:
GET /
GET /health
GET /about
GET /quote?qty=&price=&discount=

Предложи минимальную архитектуру каталогов и классов.

Контроллер не должен содержать бизнес-логику.
Бизнес-логика расчета стоимости должна тестироваться отдельно.

Сначала дай архитектуру и последовательность реализации.
Код пока не пиши.

Обязательный запрос ИИ-тестировщику

Проанализируй QuoteCalculator.

Создай набор unit-тестов, включающий:
обычные случаи;
граничные значения;
ошибочные значения;
проверку округления денежных значений.

После создания тестов запусти их.
Если тесты падают, найди причину и предложи исправление production-кода.
Не изменяй ожидаемый результат теста только ради получения зеленого теста.

Результат работы

plain-php/
docs/ai/lab-01.md

Создать Git-тег:

git tag lab-01

Критерии приемки

[ ] приложение запускается
[ ] Composer autoload работает
[ ] используются namespaces
[ ] реализовано ООП
[ ] /health возвращает JSON
[ ] /quote выполняет расчет
[ ] ошибочные входные данные отклоняются
[ ] 404 реализован
[ ] PHPUnit-тесты проходят
[ ] имеется AI log
[ ] отсутствуют секреты

PHP предназначен в том числе для серверной веб-разработки; актуальные ветки PHP 8 поддерживают современные механизмы типизации и объектной модели, а Composer предоставляет механизм управления зависимостями и автозагрузки. [7]

Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

Поднятие окружения. Типовой минимальный проект:  PHP, HTTP, Composer и работы с базами данных



Работа выполняется с ИИ и(или) ИИ-агентом. Важно разобрать проект и понять что происходит. В данной ЛР важно понимать как поднимать окружение, какие технологии используются и для чего. Понимание глубокое элементов PHP не требуется.


Лабораторная работа 1. PHP, HTTP, Composer, ООП и архитектура простого веб-приложения

Цель: создать первое серверное веб-приложение без использования фреймворка.

Рабочий каталог:

plain-php/

PHP-приложение должно использовать Composer и автозагрузку классов. Composer является стандартным менеджером зависимостей PHP и предоставляет механизм автозагрузки классов. [6]

Задание

  1. Создайте каталог проекта:

mkdir plain-php
cd plain-php
composer init

  1. Настройте в composer.json:

{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}

  1. Выполните:

composer dump-autoload

  1. Создайте структуру:

plain-php/
├── composer.json
├── public/
│ └── index.php
├── src/
│ ├── Http/
│ ├── Controller/
│ ├── Domain/
│ └── Service/
└── tests/

  1. Реализуйте единый front controller:

public/index.php

  1. Реализуйте маршруты:

GET /
GET /health
GET /about
GET /quote

  1. Маршрут /health должен возвращать JSON:

{
"status": "ok",
"php": "...",
"timestamp": "..."
}

  1. Маршрут /quote принимает:

qty
price
discount

Пример:

/quote?qty=10&price=1250&discount=7

  1. Создайте классы:

App\Domain\Money
App\Domain\Quote
App\Service\QuoteCalculator
App\Http\Request
App\Http\Response
App\Controller\QuoteController

  1. Используйте:

declare(strict_types=1);

  1. Используйте:

  2. namespaces;

  3. типы аргументов;

  4. типы возвращаемых значений;

  5. readonly-свойства там, где это оправданно;

  6. исключения для некорректных данных;

  7. DateTimeImmutable.

  8. Цена внутри бизнес-логики должна храниться целым количеством копеек.

  9. Реализуйте правила:

quantity > 0
price > 0
0 <= discount <= 50

  1. Рассчитайте:

subtotal = quantity × price
discountAmount = subtotal × discount / 100
total = subtotal - discountAmount

  1. Создайте HTML-представление расчета.

  2. Экранируйте пользовательские данные перед включением в HTML.

  3. Добавьте обработку:

400 Bad Request
404 Not Found
500 Internal Server Error

  1. Запустите приложение:

php -S localhost:8000 -t public

  1. Проверьте HTTP-запросы:

curl -i http://localhost:8000/health
curl -i "http://localhost:8000/quote?qty=10&amp;price=1250&amp;discount=7&quot;
curl -i "http://localhost:8000/quote?qty=-1&amp;price=1250&amp;discount=7&quot;
curl -i http://localhost:8000/unknown

  1. Установите PHPUnit как dev-зависимость.

  2. Напишите тесты класса QuoteCalculator.

  3. Обязательно проверить:

обычный расчет;
скидка 0%;
скидка 50%;
quantity = 0;
отрицательная цена;
discount > 50.

Обязательный запрос ИИ-аналитику

Ты — архитектор PHP-приложений.

Мне необходимо реализовать учебное PHP 8.4+ приложение без фреймворка,
использующее Composer, PSR-4, ООП и front controller.

Функции:
GET /
GET /health
GET /about
GET /quote?qty=&price=&discount=

Предложи минимальную архитектуру каталогов и классов.

Контроллер не должен содержать бизнес-логику.
Бизнес-логика расчета стоимости должна тестироваться отдельно.

Сначала дай архитектуру и последовательность реализации.
Код пока не пиши.

Обязательный запрос ИИ-тестировщику

Проанализируй QuoteCalculator.

Создай набор unit-тестов, включающий:
обычные случаи;
граничные значения;
ошибочные значения;
проверку округления денежных значений.

После создания тестов запусти их.
Если тесты падают, найди причину и предложи исправление production-кода.
Не изменяй ожидаемый результат теста только ради получения зеленого теста.

Результат работы

plain-php/
docs/ai/lab-01.md

Создать Git-тег:

git tag lab-01

Критерии приемки

[ ] приложение запускается
[ ] Composer autoload работает
[ ] используются namespaces
[ ] реализовано ООП
[ ] /health возвращает JSON
[ ] /quote выполняет расчет
[ ] ошибочные входные данные отклоняются
[ ] 404 реализован
[ ] PHPUnit-тесты проходят
[ ] имеется AI log
[ ] отсутствуют секреты

PHP предназначен в том числе для серверной веб-разработки; актуальные ветки PHP 8 поддерживают современные механизмы типизации и объектной модели, а Composer предоставляет механизм управления зависимостями и автозагрузки. [7]

https://webprogr.ru/~KYYwC
Короткая ссылка на новость:https://webprogr.ru/~KYYwC


Последние новости

Лабораторная работа I. Поднятие окружения. Типовой минимальный проект PHP, HTTP, Composer, ООП и архитектура простого веб-приложения

Поднятие окружения. Типовой минимальный проект:  PHP, HTTP, Composer и работы с базами данных



Работа выполняется с ИИ и(или) ИИ-агентом. Важно разобрать проект и понять что происходит. В данной ЛР важно понимать как поднимать окружение, какие технологии используются и для чего. Понимание глубокое элементов PHP не требуется.


Лабораторная работа 1. PHP, HTTP, Composer, ООП и архитектура простого веб-приложения

Цель: создать первое серверное веб-приложение без использования фреймворка.

Рабочий каталог:

plain-php/

PHP-приложение должно использовать Composer и автозагрузку классов. Composer является стандартным менеджером зависимостей PHP и предоставляет механизм автозагрузки классов. [6]

Задание

  1. Создайте каталог проекта:

mkdir plain-php
cd plain-php
composer init

  1. Настройте в composer.json:

{
"autoload": {
"psr-4": {
"App\\": "src/"
}
}
}

  1. Выполните:

composer dump-autoload

  1. Создайте структуру:

plain-php/
├── composer.json
├── public/
│ └── index.php
├── src/
│ ├── Http/
│ ├── Controller/
│ ├── Domain/
│ └── Service/
└── tests/

  1. Реализуйте единый front controller:

public/index.php

  1. Реализуйте маршруты:

GET /
GET /health
GET /about
GET /quote

  1. Маршрут /health должен возвращать JSON:

{
"status": "ok",
"php": "...",
"timestamp": "..."
}

  1. Маршрут /quote принимает:

qty
price
discount

Пример:

/quote?qty=10&price=1250&discount=7

  1. Создайте классы:

App\Domain\Money
App\Domain\Quote
App\Service\QuoteCalculator
App\Http\Request
App\Http\Response
App\Controller\QuoteController

  1. Используйте:

declare(strict_types=1);

  1. Используйте:

  2. namespaces;

  3. типы аргументов;

  4. типы возвращаемых значений;

  5. readonly-свойства там, где это оправданно;

  6. исключения для некорректных данных;

  7. DateTimeImmutable.

  8. Цена внутри бизнес-логики должна храниться целым количеством копеек.

  9. Реализуйте правила:

quantity > 0
price > 0
0 <= discount <= 50

  1. Рассчитайте:

subtotal = quantity × price
discountAmount = subtotal × discount / 100
total = subtotal - discountAmount

  1. Создайте HTML-представление расчета.

  2. Экранируйте пользовательские данные перед включением в HTML.

  3. Добавьте обработку:

400 Bad Request
404 Not Found
500 Internal Server Error

  1. Запустите приложение:

php -S localhost:8000 -t public

  1. Проверьте HTTP-запросы:

curl -i http://localhost:8000/health
curl -i "http://localhost:8000/quote?qty=10&amp;price=1250&amp;discount=7&quot;
curl -i "http://localhost:8000/quote?qty=-1&amp;price=1250&amp;discount=7&quot;
curl -i http://localhost:8000/unknown

  1. Установите PHPUnit как dev-зависимость.

  2. Напишите тесты класса QuoteCalculator.

  3. Обязательно проверить:

обычный расчет;
скидка 0%;
скидка 50%;
quantity = 0;
отрицательная цена;
discount > 50.

Обязательный запрос ИИ-аналитику

Ты — архитектор PHP-приложений.

Мне необходимо реализовать учебное PHP 8.4+ приложение без фреймворка,
использующее Composer, PSR-4, ООП и front controller.

Функции:
GET /
GET /health
GET /about
GET /quote?qty=&price=&discount=

Предложи минимальную архитектуру каталогов и классов.

Контроллер не должен содержать бизнес-логику.
Бизнес-логика расчета стоимости должна тестироваться отдельно.

Сначала дай архитектуру и последовательность реализации.
Код пока не пиши.

Обязательный запрос ИИ-тестировщику

Проанализируй QuoteCalculator.

Создай набор unit-тестов, включающий:
обычные случаи;
граничные значения;
ошибочные значения;
проверку округления денежных значений.

После создания тестов запусти их.
Если тесты падают, найди причину и предложи исправление production-кода.
Не изменяй ожидаемый результат теста только ради получения зеленого теста.

Результат работы

plain-php/
docs/ai/lab-01.md

Создать Git-тег:

git tag lab-01

Критерии приемки

[ ] приложение запускается
[ ] Composer autoload работает
[ ] используются namespaces
[ ] реализовано ООП
[ ] /health возвращает JSON
[ ] /quote выполняет расчет
[ ] ошибочные входные данные отклоняются
[ ] 404 реализован
[ ] PHPUnit-тесты проходят
[ ] имеется AI log
[ ] отсутствуют секреты

PHP предназначен в том числе для серверной веб-разработки; актуальные ветки PHP 8 поддерживают современные механизмы типизации и объектной модели, а Composer предоставляет механизм управления зависимостями и автозагрузки. [7]

Рейтинг@Mail.ru