Доступ к переменной сеанса в классе

Считается ли это нормальным использование session_start в конструкторе класса, когда необходимо получить или сохранить значения сеанса? Лучшие практики?

Переменная сеанса coudn't не извлекается из класса, если session_start не вызван из __contruct.

session_start(); if(isset($_REQUEST['siteid'])){ $siteid = $_REQUEST['siteid']; $_SESSION['siteid'] = $siteid; echo $siteid; }else{ $siteid = ""; } require_once 'common/lib_constant.php'; require_once 'common/database.php'; require_once 'common/common.class.php'; $commonClass = new commonClass(); 

Лучшей практикой является запуск сеанса из бутстрапа.
и сам сеанс доступа через какой-то класс интеллектуальных оболочек (примеры см. в ZF).
Таким образом, вы должны быть на 100% уверены, что у вас не будет проблем с заголовком и дублирования вызовов session_start в вашем коде.
Класс может быть создан несколько раз / запросить … bootstrap запускается только один раз / запрос.

Вы должны использовать объект-оболочку для доступа к переменным сеанса, который вызывает session_start() при первом запросе, который он обрабатывает, а затем сохраняет флаг, означающий, что это было сделано, или вызывает session_start() просто внутри своего конструктора.

Вы можете использовать одноэлементный шаблон или так называемую инъекцию зависимостей, которая, несмотря на исходное имя, просто передает ссылку на объект (вызов) $Session для каждого объекта, который в ней нуждается.

Должен существовать только один экземпляр объекта Session .