2016-10-20 4 views
0

У меня есть сервер, на котором запущен API, используя Slim.PHP - API SLIM - howto обмениваются переменными в нескольких PHP-файлах, но запрашивает конкретные

Каждый запрос API указывает на PHP-код/​​функции, разделенные на разные PHP-файлы. Я не настолько тяжел в PHP, и теперь я передаю или устанавливаю переменные в каждом классе, где это необходимо.

Я удивлен, если нет лучшего способа установить глобальную переменную REQUEST SCOPE, которая может быть разделена между различными файлами PHP? Но не разделяются между всеми входящими запросами.

Должен ли я:

  • Работа с сессиями?
  • Работайте с Singleton?
  • ...

примеры кода трудно дать. Этот вопрос больше подходит к концептуальному вопросу.

Какой-либо хороший совет для совместного использования переменных в нескольких файлах PHP, но с областью ЗАПРОСА?

+0

С областью запроса вы имеете в виду данные, которые сохраняются между запросами одного и того же клиента? – jmattheis

+0

Где каждый вызов API является запросом. Поскольку API обрабатывает несколько запросов для разных приложений. В качестве примера каждый запрос отправляется по APIKEY. Этот APIKEY - это переменная, необходимая для нескольких мест в коде.Поэтому поиск более простого способа доступа к значению без необходимости прохождения по этому значению в каждом классе конструктора/класса setter. –

ответ

1

Вы должны понимать, что ваше приложение PHP инициировано для каждого входящего запроса, поэтому вы не можете «делиться» данными между запросами случайно. Я действительно не могу придумать способ сделать это нарочно.

Что касается «обмена информацией» между разными файлами: информация фактически разделяется. Вот пример:

project/ 
    test.php 
    mew.php 

Содержание test.php:

<?php 
$foo = 'bar'; 
include 'mew.php'; 

Содержание mew.php:

<?php 
echo $foo; // accessing variable that was declared in "parent" file 

Выход GET project/test.php запроса:

bar 

Итак, у вас действительно нет проблемы с «совместным использованием».

Редактировать

Ваш комментарий Я понимаю, что вам нужно какое-то аутентификации клиента. Это можно сделать по-разному: от примитивной и небезопасной аутентификации по IP-адресу (например, с использованием this middleware), аутентичной HTTP-аутентификации (tool for that), JWT - хороший метод (tool).

Концептуально это просто: каждый запрос клиента должен сопровождаться каким-то токеном. Когда вы получаете запрос, вы получаете этот токен, идентифицируете клиента и возвращаете соответствующий ответ.

+0

Спасибо за разъяснение !!! :) Итак, создание Singleton (например, RequestDataClass) - и установка переменных внутри этого Singleton будет безопасным способом? Каждый запрос API инициирует новый класс Singleton и не вмешивается в другие запросы Singletons, правильно? –

+0

Что вы ожидаете, что 'RequestDataClass' будет содержать? –

+0

Общие данные, которые совместно используются для конкретного APICALL по логике приложений. –