@Alk90
php, mysql, jquery, css, html, api

Как не обращаться к глобальным переменным из классов?

Всем привет! При запросах к серверу через API, идет обращение к классу с соответствующим названием.
Например UsersGetById вызовет следующую цепочку файлов:
index.php -> init.php -> UsersGetById.php
Например, клиент хочет получить данные о пользователе. НО, эти данные должны включать, например последние 10 фото из альбома и последние 10 постов со стены.
Я делаю так:
Файл init.php вызывает метод UsersGetById.php->run(), который проверяет необходимые поля (например ID требуемого пользователя) и обращается ко всем необходимым классам, в том числе к классу Users (не путать с UsersGetById.php), который отвечает только за пользователей и имеет метод Users->getById(),
Также идет обращения к классу альбомов Albums->getPhotosByUserId()
и классу постов Posts->getPostsByUserId()

Получается, что все необходимые поля, которые должны быть получены от клиента (в нашем случае USER_ID), должны проверяться в методе users.getById.php->run() как-то так:
if(isset($_GET['user_id']) && preg_match('/^[\d]+$/is')){
   //... и пошли собирать данные по основным классам
   $data['account_info'] = Users->getById($_GET['user_id']);
   $data['photos'] = Albums->getPhotosByUserId($_GET['user_id']);
   $data['posts'] = Posts->getPostsByUserId($_GET['user_id']);

   return json_encode($data);
}else{
   return false;
}


Я полагаю, не правильно из всех подобных классов обращаться к глобальному массиву $_GET?
Но я не могу придумать как этого избежать... Пните в нужную сторону пожалуйста.
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Создайте класс-хранилище, где будете проверять фильтрами (перед помещением данных в него) и брать из него в других классах, доверяя этим данным (т.к. они - уже будут проверены этим классом).
Ответ написан
@galliard
UsersGetById.php->run($_GET['user_id'])

Очевидно же
Ответ написан
Ваш ответ на вопрос

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

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