Sessions class With assoc-array - practicing
return isset($_SESSION[$name]) ? true : false; is more succintly written as:

return isset($_SESSION[$name]);


The boolean evaluation of isset() is all you need.
You can use the null coalescing operator to tight up:

if(isset($_SESSION[$name])){
    return $_SESSION[$name];
}else {
    return false;
}


Into:

return $_SESSION[$name] ?? false;

You never need to check if a variable exists before calling unset(). If the variable doesn't exist, the script smoothly, silently continues processing as usual.
The tabbing of your code is needing a fair amount of tender loving care.  Use 4 spaces to indent where necessary. PSR standards are available for everyone's benefit.
I don't think I support the technique of pushing an error message into an array pre-emptively, then removing the element if everything passes.  Add a descriptive error to the error array ONLY if an error is detected.
If you are not going to use a variable (e.g. $key in your loop), then don't bother declaring it. 
I realize this is just practice, but try to store only id values in session data if your project permits it.  There is such a thing as Session Hijacking -- it may be an extreme scenario, but it is best to avoid storing any "real world" identifying data in session arrays.
I generally avoid using AND and OR in my if expressions so that I am never tripped up by a fringe "precedence" gotcha.
If you want to display boolean values for diagnostics, I recommend var_export().
Finally, read about how to destroy a session on logout: PHP Session Destroy on Log Out Button