session.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. /**
  3. *
  4. *
  5. * @author Taddeus Kroes
  6. * @date 05-10-2012
  7. * @since 0.2
  8. * @todo Documentation
  9. */
  10. namespace webbasics;
  11. require_once 'base.php';
  12. /**
  13. *
  14. *
  15. * @package WebBasics
  16. */
  17. class Session implements Singleton {
  18. /**
  19. * @see Singleton::$instance
  20. */
  21. private static $instance;
  22. /**
  23. * @see Singleton::getInstance()
  24. */
  25. static function getInstance() {
  26. if (self::$instance === null)
  27. self::$instance = new self;
  28. return self::$instance;
  29. }
  30. /**
  31. * Constructor, starts a new session.
  32. *
  33. * @codeCoverageIgnore
  34. */
  35. private function __construct() {
  36. session_start();
  37. }
  38. function set($names, $value=null) {
  39. if (is_array($names)) {
  40. foreach ($names as $name => $value)
  41. $this->set($name, $value);
  42. } else {
  43. $_SESSION[$names] = $value;
  44. }
  45. }
  46. function get($names) {
  47. if (is_array($names)) {
  48. $values = array();
  49. foreach ($names as $name)
  50. $values[] = $_SESSION[$name];
  51. return $values;
  52. }
  53. return $_SESSION[$names];
  54. }
  55. function isRegistered($name) {
  56. return isset($_SESSION[$name]);
  57. }
  58. function areRegistered(array $names) {
  59. foreach ($names as $name) {
  60. if (!isset($_SESSION[$name]))
  61. return false;
  62. }
  63. return true;
  64. }
  65. function getId() {
  66. return session_id();
  67. }
  68. function regenerateId() {
  69. session_regenerate_id();
  70. }
  71. /**
  72. * @codeCoverageIgnore
  73. */
  74. function close() {
  75. session_write_close();
  76. }
  77. function clear() {
  78. $_SESSION = array();
  79. }
  80. function destroy($clear=true) {
  81. // Delete session
  82. session_destroy();
  83. // Clear session variables
  84. if ($clear)
  85. $this->clear();
  86. // Delete session cookie
  87. if (ini_get('session.use_cookies')) {
  88. $params = session_get_cookie_params();
  89. setcookie(session_name(), '', time() - 42000, $params['path'],
  90. $params['domain'], $params['secure'], $params['httponly']);
  91. }
  92. // Delete reference to instance so that the next getInstance() call
  93. // will start a new session
  94. self::$instance = null;
  95. }
  96. }
  97. ?>