Как лучше реализовать класс, для работы с пользователем? Всем доброго дня!
Недавно начал изучать ООП, и теперь пришло время применить это на практике. Но так как знания у меня чисто теоретические, то я не могу с уверенностью сказать, что я делаю правильно.
Задача такова:
- получить куки пользователя;
- провести куки через фильтры;
- проверить куки на валидность с данными пользователя;
- получить данные авторизованного пользователя, для работы с ними;
Вот класс который я реализовал: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
265 +1
0
Ответы
1

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

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

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

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

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

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

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

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