Are there any best practices for incorporating sessions into PHP classes, especially for tasks like a login system?

When incorporating sessions into PHP classes, it is important to ensure that the session is started before any session variables are accessed or set. It is also recommended to encapsulate session-related functionality within class methods to keep code organized and maintainable. Additionally, using session_regenerate_id() after a successful login can help enhance security by preventing session fixation attacks.

class LoginSystem {
    public function __construct() {
        if(session_status() == PHP_SESSION_NONE) {
            session_start();
        }
    }

    public function loginUser($username, $password) {
        // perform login logic
        if($loginSuccess) {
            session_regenerate_id();
            $_SESSION['username'] = $username;
        }
    }

    public function isLoggedIn() {
        return isset($_SESSION['username']);
    }

    public function logoutUser() {
        session_unset();
        session_destroy();
    }
}

$loginSystem = new LoginSystem();