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

Как правильно обращаться к классу из других классов?

Всем привет! Помогите понять, правильно ли я делаю аутентификацию и запросы к данным связанным с ней...

Пишу на сайте API для приложения и вот встал вопрос с аутентификацией (не путить с авторизацией).
Все запросы к API делаются через один файл (скажем index.php)
В этом файле создается объект класса Auth (Singleton) который проверяет token и получает данные (ID, Группу, Разрешения для этой группы и т.д.) о текущем пользователе из БД.
Дальше проверяется вызванный метод API и подключается необходимый файл (класс) через require_once.
И тут проблема. Например, мне нужно проверить может ли пользователь писать комментарии или посты и т.д.
И для этого мне нужно сделать проверку в методе $Auth->checkRole('add_comments') из класса AddComment

Для того, чтобы обращаться к классу Auth из другого класса, мне приходится в каждом классе, который обращается к классу Auth, в конструкторе, создавать свойство через метод $this->auth = $Auth::getInstance()

Ну а дальше понятно, в любом методе класса AddComment я просто обращаюсь к классу Auth через свойство $this->auth как к объекту класса.

Правильный ли это подход? Ведь мне нужно практически в каждом классе API обращаться к классу Auth, а значит и в каждый конструктор добавлять эту строку $this->auth = $Auth::getInstance()
  • Вопрос задан
  • 572 просмотра
Пригласить эксперта
Ответы на вопрос 2
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
В этом файле создается объект класса Auth (Singleton) который проверяет token и получает данные (ID, Группу, Разрешения для этой группы и т.д.) о текущем пользователе из БД

Для чего выполняется это действие? Разве тут вы не провряете права пользователя?

Может стоить взять готовое решение? Например Zend ACL
https://framework.zend.com/manual/1.12/ru/zend.acl...
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
Правильный ли это подход? Ведь мне нужно практически в каждом классе API обращаться к классу Auth, а значит и в каждый конструктор добавлять эту строку $this->auth = $Auth::getInstance()

Если хотите упороться и сделать все по SOLID, то да, правильно.

Если же хотите сделать просто и надежно, то можно типа:
Yii::$app->user->can('add_comments')
Ответ написан
Ваш ответ на вопрос

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

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