Класс Date в ООП на PHP
Начиная с данного урока мы с вами будем применять изученную теорию по ООП на практических примерах, создавая различные классы.
Давайте для разминки сделаем класс для работы с датой. Пусть этот класс параметром конструктора принимает дату в формате год-месяц-день и имеет следующие методы:
<?php
class Date
{
public function __construct($date = null)
{
// если дата не передана - пусть берется текущая
}
public function getDay()
{
// возвращает день
}
public function getMonth($lang = null)
{
// возвращает месяц
// переменная $lang может принимать значение ru или en
// если эта не пуста - пусть месяц будет словом на заданном языке
}
public function getYear()
{
// возвращает год
}
public function getWeekDay($lang = null)
{
// возвращает день недели
// переменная $lang может принимать значение ru или en
// если эта не пуста - пусть день будет словом на заданном языке
}
public function addDay($value)
{
// добавляет значение $value к дню
}
public function subDay($value)
{
// отнимает значение $value от дня
}
public function addMonth($value)
{
// добавляет значение $value к месяцу
}
public function subMonth($value)
{
// отнимает значение $value от месяца
}
public function addYear($value)
{
// добавляет значение $value к году
}
public function subYear($value)
{
// отнимает значение $value от года
}
public function format($format)
{
// выведет дату в указанном формате
// формат пусть будет такой же, как в функции date
}
public function __toString()
{
// выведет дату в формате 'год-месяц-день'
}
}
?>
Давайте посмотрим, как мы будем пользоваться нашим классом:
<?php
$date = new Date('2025-12-31');
echo $date->getYear(); // выведет '2025'
echo $date->getMonth(); // выведет '12'
echo $date->getDay(); // выведет '31'
echo $date->getWeekDay(); // выведет '3'
echo $date->getWeekDay('ru'); // выведет 'среда'
echo $date->getWeekDay('en'); // выведет 'wednesday'
?>
<?php
echo (new Date('2025-12-31'))->addYear(1); // '2026-12-31'
echo (new Date('2025-12-31'))->addDay(1); // '2026-01-01'
echo (new Date('2025-12-31'))->subDay(3)->addYear(1); // '2026-12-28'
?>
Реализуйте описанный класс Date
. Проверьте
его работу.