Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу PHP

ника пар Ученик (71), закрыт 5 месяцев назад
решите используя магический метод в ООП:
1. Сделайте класс Date с публичными свойствами year, month и day.
2. С помощью магии сделайте свойство weekDay, которое будет возвращать
день недели, соответствующий дате.
Лучший ответ
Николай Веселуха Высший разум (367679) 6 месяцев назад
 class Date { 
public $day = 1;
public $month = 1;
public $year = 1970;

public function weekDay() {
$days = array('Воскресенье', 'Понедельник', 'Вторник', 'Среда','Четверг', 'Пятница', 'Суббота');
$timestamp = mktime(0, 0, 0, $this->month, $this->day, $this->year);
$date = getdate($timestamp);
return $days[$date['wday']];
}
}

$date = new Date();
$date->day = 16;
$date->month = 4;
$date->year = 2024;
echo $date->weekDay();
MikechМастер (1574) 6 месяцев назад
надо магическое свойство, а не функцию
через _get()


 class MagicPropertyClass { 
private $data = [];

public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
return null; // или можно выбросить исключение
}

public function __set($name, $value) {
$this->data[$name] = $value;
}
}

// Использование класса

$obj = new MagicPropertyClass();
$obj->dynamicProperty = 'Значение магического свойства';

echo $obj->dynamicProperty; // Выведет: Значение магического свойства
Николай Веселуха Высший разум (367679) Mikech, да я знаю, что лопухнулся, когда продублированный вопрос более внимательно прочитал, а что-то менять уже было лень :)
Остальные ответы
Сергей Мастер (1601) 6 месяцев назад
Привет, вот import datetime

class Date:
def __init__(self, year, month, day):
self.year = year
self.month = month
self.day = day

@property
def weekDay(self):
# Здесь используется встроенный модуль datetime для определения дня недели
date = datetime.date (self.year, self.month, self.day )
# Возвращаемый результат - это название дня недели
return date.strftime("%A")

# Пример использования
d = Date(2024, 4, 15) # Ваша дата
print(d.weekDay) # Понедельник
stepМастер (1282) 6 месяцев назад
ну, почти PHP
step, ?
Андрей Филькин Знаток (263) 6 месяцев назад
Магические методы могут привести к трудно отлавливаемым ошибкам
Лучше избегать их использования
Или я не прав?
Похожие вопросы