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; | |
} | |
} | |