Как лучше реализовать класс, для работы с пользователем? Всем доброго дня!
Недавно начал изучать ООП, и теперь пришло время применить это на практике. Но так как знания у меня чисто теоретические, то я не могу с уверенностью сказать, что я делаю правильно.
Задача такова:
- получить куки пользователя;
- провести куки через фильтры;
- проверить куки на валидность с данными пользователя;
- получить данные авторизованного пользователя, для работы с ними;
Вот класс который я реализовал:class player
{
private static $instance;
private static $data;
private function __construct()
{
if(!empty($_COOKIE['pid']) && !empty($_COOKIE['key']))
{
if(preg_match('/^[0-9]{1,6}$/', $_COOKIE['pid']) && preg_match('/^[0-9]{1,6}$/', $_COOKIE['key']) && preg_match('/^[0-9]{0,1}$/', $_COOKIE['new']))
{
if($_COOKIE['new'] != 1) { $dir = 'base'; } else { $dir = 'new'; }
$session = 'ldb/sessions/'.$dir.'/'.$_COOKIE['pid'].'/'.md5($_COOKIE['key'].$_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']).'/';
if(is_dir($session))
{
require_once $session."a.php";
self::$data = array('id' => $a[0],'type' => $a[1],'nick' => $a[2]);
}
else
{
// удалить куки
}
}
else
{
// удалить куки
}
}
}
private function __clone() {}
public static function instance()
{
if(empty(self::$instance))
{
self::$instance = new self();
return self::$instance;
}
}
public static function data($arg)
{
$return = self::$data[$arg];
return $return;
}
}
Код работает, но правильно-ли я воспользовался ООП по заданной задаче?

21 Авг 2019 в 06:59
240 +1
0
Ответы
1

Ваш код реализует основные принципы ООП, такие как инкапсуляция и синглтон. Однако его можно улучшить, следую рекомендациям ООП:

Разделите методы на более мелкие и четко определенные функции. Например, вынесите проверку на валидность кук в отдельный метод.

Используйте более информативные имена переменных и методов. Например, вместо $a[0], $a[1], используйте $userId, $userType.

Храните данные пользователя в виде объекта, а не массива. Создайте отдельный класс для пользователя и храните данные в его свойствах.

Избегайте прямого обращения к суперглобальным переменным, таким как $_COOKIE и $_SERVER. Лучше передавайте нужные данные как аргументы методам класса.

Разбейте функционал на более мелкие классы с определенной ответственностью. Например, класс для работы с куками, класс для аутентификации пользователя и т.д.

Надеюсь, эти рекомендации помогут улучшить ваш класс и сделать его более гибким и поддерживаемым. Удачи в дальнейшем изучении ООП!

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 95 172 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир