Code Coverage  | 
     ||||||||||
Classes and Traits  | 
      Functions and Methods  | 
      Lines  | 
     ||||||||
| Total |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      8 / 8  | 
      CRAP |         | 
      100.00%  | 
      18 / 18  | 
     
| PropertySet |         | 
      100.00%  | 
      1 / 1  | 
              | 
      100.00%  | 
      8 / 8  | 
      12 |         | 
      100.00%  | 
      18 / 18  | 
     
| __construct() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| __get($name) |         | 
      100.00%  | 
      1 / 1  | 
      2 |         | 
      100.00%  | 
      4 / 4  | 
     |||
| __set($name, $property) |         | 
      100.00%  | 
      1 / 1  | 
      3 |         | 
      100.00%  | 
      5 / 5  | 
     |||
| rewind() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| current() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| key() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| next() |         | 
      100.00%  | 
      1 / 1  | 
      1 |         | 
      100.00%  | 
      2 / 2  | 
     |||
| valid() |         | 
      100.00%  | 
      1 / 1  | 
      2 |         | 
      100.00%  | 
      1 / 1  | 
     |||
| <?php | |
| /* Copyright (c) 2013, 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: PropertySet.php 841 2013-08-19 22:19:47Z geert $ | |
| */ | |
| /** | |
| * Implementation of the \Scrivo\PropertySet class. | |
| */ | |
| namespace Scrivo; | |
| /** | |
| * A property set provides property access to the page properties of | |
| * a page or list item properties of a list item. | |
| * | |
| * When constructing pages or list items their list items will be added | |
| * to the property sets that belong to these pages or list items. | |
| * | |
| * The property set also deals with the late binding of application | |
| * properties. | |
| */ | |
| class PropertySet implements \Iterator { | |
| /** | |
| * An array to hold the properties. | |
| * | |
| * @var array | |
| */ | |
| protected $properties; | |
| /** | |
| * Construct an empty property set. | |
| */ | |
| public function __construct() { | |
| $this->properties = array(); | |
| } | |
| /** | |
| * Retrieve a property from the property set. | |
| * | |
| * @param string $name The name of the property. | |
| * | |
| * @return \Scrivo\PageProperty|\Scrivo\ListItemProperty $property The | |
| * property to retrieve. | |
| */ | |
| public function __get($name) { | |
| if (isset($this->properties[$name])) { | |
| return $this->properties[$name]; | |
| } | |
| throw new \Scrivo\SystemException("Invalid property \"$name\". Valid ". | |
| "properties are: ".implode(", ", array_keys($this->properties))); | |
| } | |
| /** | |
| * Add a property to the property set. | |
| * | |
| * @param string $name The name of the property . | |
| * @param \Scrivo\PageProperty|\Scrivo\ListItemProperty $property The | |
| * property to add. | |
| */ | |
| public function __set($name, $property) { | |
| if ($property instanceof \Scrivo\PageProperty | |
| || $property instanceof \Scrivo\ListItemProperty) { | |
| $this->properties[$name] = $property; | |
| } else { | |
| throw new \Scrivo\SystemException("Illegal argument"); | |
| } | |
| } | |
| /** | |
| * Rewind the properties array so iterating will start at the beginning | |
| * again. | |
| */ | |
| function rewind() { | |
| reset($this->properties); | |
| } | |
| /** | |
| * Get the current property when iterating. | |
| */ | |
| function current() { | |
| return current($this->properties); | |
| } | |
| /** | |
| * Get the key of the current property when iterating. | |
| */ | |
| function key() { | |
| return key($this->properties); | |
| } | |
| /** | |
| * Get the next property when iterating. | |
| */ | |
| function next() { | |
| next($this->properties); | |
| } | |
| /** | |
| * Check if the current key is valid. | |
| */ | |
| function valid() { | |
| return key($this->properties) ? true : false; | |
| } | |
| } | |