@SayrusCraft
Разработчик сайтов для мобильных устройств

Как лучше реализовать класс, для работы с пользователем?

Всем доброго дня!

Недавно начал изучать ООП, и теперь пришло время применить это на практике. Но так как знания у меня чисто теоретические, то я не могу с уверенностью сказать, что я делаю правильно.

Задача такова:
- получить куки пользователя;
- провести куки через фильтры;
- проверить куки на валидность с данными пользователя;
- получить данные авторизованного пользователя, для работы с ними;

Вот класс который я реализовал:
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;
}

}


Код работает, но правильно-ли я воспользовался ООП по заданной задаче?
  • Вопрос задан
  • 1118 просмотров
Решения вопроса 2
@sidni
Php Developer
К сожалению просто класс похожий на синглтон.
если по хорошему
то сначала нужно сделать интерфейс Storage, который будет регламентировать работу с хранищем
потом надо на основе этого интерфейса сделать класс который будет работать с COOKIE то есть сохранять и доставать любые данные из этого хранилища
потом делать свой класс player в параметрах коснтруктора указать Storage который в последствии заинжектится нужное хранилище (в данном случае по работе с кукисами)
Это
if(is_dir($session))
{
require_once $session."a.php";
....
}

Вообще полный яд, так ни в одной книжке по ООП не найдете. У вас объект должен быть как можно меньше зависим от сторонних классов и модулей (желательно только от абстракций как указано выше с Storage)
ЗЫ ну и вообще лучше делать автолоад и переходить на неймспейсы.
Ответ написан
Комментировать
@ryvkin-sergey
1) Зачем Singleton? Читайте про SOLID и старайтесь максимально избегать Singleton в архитектуре приложений.
2) Зачем хранить данные в массиве внутри объекта? Гораздо удобнее и нагляднее распихать их по свойствам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@atawerrus
Это вообще не ООП код, тут просто взят какой-то паттерн и процедурный код в методах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы