Вызов session_start в вашем коде связывает вас с реализацией session_start в PHP.На самом деле, идея сеанса имеет мало смысла в CLI.Вы можете защитить свои вызовы session_start с помощью следующего кода в вашем классе:
if (!isset($_SESSION))
{
// If we are run from the command line interface then we do not care
// about headers sent using the session_start.
if (PHP_SAPI === 'cli')
{
$_SESSION = array();
}
elseif (!headers_sent())
{
if (!session_start())
{
throw new Exception(__METHOD__ . 'session_start failed.');
}
}
else
{
throw new Exception(__METHOD__ . 'Session started after headers sent.');
}
}
Я сохранил свой класс сеанса как раз для этого кода (плюс простая функция id для session_id).Тестирование на CLI может продолжаться, так как был защищен вызов session_start.На самом деле тестирование кода, который я вставил, очень сложно.Вы можете проверить это, наблюдая в браузере за пределами вашего обычного тестирования CLI.По крайней мере, все остальные ваши тесты CLI теперь не будут затронуты вызовами session_start.