Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      6 / 6  | 
      CRAP |         | 
      100.00%  | 
      17 / 17  | 
     
| Session |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      6 / 6  | 
      9 |         | 
      100.00%  | 
      17 / 17  | 
     
| __construct($section=null) |         | 
      100.00%  | 
      1 / 1  | 
      3 |         | 
      100.00%  | 
      7 / 7  | 
     |||
| __set($name, $value) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| __get($name) |         | 
      100.00%  | 
      1 / 1  | 
      2 |         | 
      100.00%  | 
      3 / 3  | 
     |||
| __isset($name) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| __unset($name) |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| destroy() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| <?php | |
| /* Copyright (c) 2012, Geert Bergman (geert@scrivo.nl) | |
| * All rights reserved. | |
| * | |
| * Redistribution and use in source and binary forms, with or without | |
| * modification, are permitted provided that the following conditions are met: | |
| * | |
| * 1. Redistributions of source code must retain the above copyright notice, | |
| * this list of conditions and the following disclaimer. | |
| * 2. Redistributions in binary form must reproduce the above copyright notice, | |
| * this list of conditions and the following disclaimer in the documentation | |
| * and/or other materials provided with the distribution. | |
| * 3. Neither the name of "Scrivo" nor the names of its contributors may be | |
| * used to endorse or promote products derived from this software without | |
| * specific prior written permission. | |
| * | |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | |
| * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | |
| * POSSIBILITY OF SUCH DAMAGE. | |
| * | |
| * $Id: Session.php 708 2013-07-02 11:59:37Z geert $ | |
| */ | |
| /** | |
| * Implementation of the \Scrivo\Session class. | |
| */ | |
| namespace Scrivo; | |
| /** | |
| * The Scrivo Session class is a lightweight container for session variables. | |
| * It should enable you to create a section in to session variable space to | |
| * store a set of session variables and to enable you to destroy the complete | |
| * set at once. | |
| * | |
| * <?php | |
| * // script1.php | |
| * $session = new \Scrivo\Session("My_session"); | |
| * $session->userId = 32; | |
| * header("Location: script2.php"); | |
| * ?> | |
| * | |
| * <?php | |
| * // script2.php | |
| * $session = new \Scrivo\Session("My_session"); | |
| * echo $session->userId; | |
| * ?> | |
| */ | |
| class Session { | |
| /** | |
| * The name of the section. | |
| * @var string | |
| */ | |
| private $section = "Scrivo"; | |
| /** | |
| * Construct a session, either using the default session name: "Scrivo" or | |
| * using your own name. | |
| * | |
| * @param string $section | |
| */ | |
| public function __construct($section=null) { | |
| if ($section) { | |
| $this->section = $section; | |
| } | |
| if (!isset($_SESSION[$this->section])) { | |
| $_SESSION[$this->section] = array(); | |
| } | |
| } | |
| /** | |
| * Implementation of the writable properties using the PHP magic | |
| * method __set(). | |
| * | |
| * @param string $name The name of the property to set. | |
| * @param mixed $value The value of the property to set. | |
| */ | |
| public function __set($name, $value) { | |
| $_SESSION[$this->section][$name] = $value; | |
| } | |
| /** | |
| * Property access to a session variable. | |
| * | |
| * @param string $name The session variable name. | |
| * @return mixed The value of the session variable. | |
| * @throws \Scrivo\SystemException if the variable does not exists. | |
| */ | |
| public function __get($name) { | |
| if ($this->__isset($name)) { | |
| return $_SESSION[$this->section][$name]; | |
| } | |
| throw new \Scrivo\SystemException("Invalid session variable $name"); | |
| } | |
| /** | |
| * Check if a session variable was set. | |
| * | |
| * @param string $name The session variable name. | |
| */ | |
| public function __isset($name) { | |
| return isset($_SESSION[$this->section][$name]); | |
| } | |
| /** | |
| * Unset/delete a session variable. | |
| * | |
| * @param string $name The session variable name. | |
| */ | |
| public function __unset($name) { | |
| unset($_SESSION[$this->section][$name]); | |
| } | |
| /** | |
| * Destroy the session and all its variables. | |
| */ | |
| public function destroy() { | |
| $_SESSION[$this->section] = array(); | |
| } | |
| } | |