Ничто не мешает вам начать сеанс внутри класса или прекратить его работу, когда это сделано таким образом, но эта проблема заключается в том, что session_start()
должен запускаться ДО того, как любой вывод будет отправлен в браузер.
Когда вы начинаете сеанс в классе, нет никакого способа узнать, будет ли создан этот класс, и соответствующий метод, называемый ПЕРЕД чем-то еще, передал что-то в браузер.
Если вы делаете
<?php
$my_session = new session_class;
.. code, code ,code
?>
<DOCTYPE html>
!<-- other html -->
Тогда это, вероятно, будет работать
Но если вы сделаете
<DOCTYPE html>
<html>
<head>
!<-- other html -->
<?php
$my_session = new session_class;
Тогда сессия определенно не будет работать.
Так что, когда вы попытаетесьзапустите сеанс в каком-либо произвольном классе, который вызывается в некоторой произвольной точке в потоке логики HTML / PHP; вероятность того, что что-то где-то уже отправлено в браузер.В основном вы теряете контроль.