#php #frameworks #composer-php #decoupling
#php #фреймворки #композитор-php #развязка
Вопрос:
Я переделываю свою существующую библиотеку CodeIgniter в повторно используемый пакет composer, не зависящий от фреймворка.
Мой код зависит от CI session
и uri
библиотек и представлений.
Я наблюдал за этим. Читать это
Вот что я подумал сделать:
- создайте интерфейс сеанса
- создайте класс, который использует session CI, расширив интерфейс
но мне все еще немного неясно, как это сделать.
Обновить
Я почти справился с этим. то же самое реализовано здесь, как обсуждалось в докладе, связанном выше.
Ответ №1:
В PHP у вас есть массив с именем $_SESSION
. Вы могли бы реализовать class
, называемый SessionHandler
. В этом class
вам следует создать метод для запуска сеанса и другой для уничтожения сеанса. Вы также можете создавать методы для выполнения других действий. Очень простая реализация была бы такой:
class SessionHandler {
private static $isStarted = false;
public static function startSession() {
if (!SessionHandler::$isStarted amp;amp; session_status() === 1) {
SessionHandler::$isStarted = true;
session_start();
}
}
public function destroySession() {
session_destroy();
}
public function getElement($key, $defaultValue = null) {
return ((isset($_SESSION[$key])) ? ($_SESSION[$key]) : ($defaultValue));
}
public function setElement($key, $value) {
$_SESSION[$key] = $value;
}
public function __construct() {
SessionHandler::startSession();
}
}
Комментарии:
1. Здесь я согласен с Лайошем Арпадом. Вы также можете проверить пример того, как это делается в Aura. Auth github.com/auraphp/Aura.Auth/blob /… и github.com/auraphp/Aura.Auth/blob/… . Однако он не запускает session первым, а только при вызове start.