session.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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 regenerateId() {
  66. session_regenerate_id();
  67. }
  68. /**
  69. * @codeCoverageIgnore
  70. */
  71. function close() {
  72. session_write_close();
  73. }
  74. function clear() {
  75. $_SESSION = array();
  76. }
  77. function destroy($clear=false) {
  78. if ($clear)
  79. $this->clear();
  80. session_destroy();
  81. self::$instance = null;
  82. }
  83. }
  84. ?>