|
@@ -0,0 +1,107 @@
|
|
|
|
+<?php
|
|
|
|
+
|
|
|
|
+namespace Pico\Model;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * Abstract model which implements the ArrayAccess interface
|
|
|
|
+ *
|
|
|
|
+ * @author Frank Nägler
|
|
|
|
+ * @link http://pico.dev7studios.com
|
|
|
|
+ * @license http://opensource.org/licenses/MIT
|
|
|
|
+ * @version 0.1
|
|
|
|
+ */
|
|
|
|
+class AbstractModel implements \ArrayAccess {
|
|
|
|
+ protected $data = array();
|
|
|
|
+
|
|
|
|
+ public function get($key) {
|
|
|
|
+ return (isset($this->data[$key])) ? $this->data[$key] : null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function set($key, $value) {
|
|
|
|
+ $this->data[$key] = $value;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function __get($name) {
|
|
|
|
+ return $this->get($name);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function __set($name, $value) {
|
|
|
|
+ $this->set($name, $value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function __call($name, $args) {
|
|
|
|
+ if (strpos($name, 'get') !== false) {
|
|
|
|
+ $name = substr($name, 3);
|
|
|
|
+ return $this->get($name);
|
|
|
|
+ }
|
|
|
|
+ if (strpos($name, 'set') !== false) {
|
|
|
|
+ $name = substr($name, 3);
|
|
|
|
+ return $this->set($name, $args[0]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * (PHP 5 >= 5.0.0)<br/>
|
|
|
|
+ * Whether a offset exists
|
|
|
|
+ *
|
|
|
|
+ * @link http://php.net/manual/en/arrayaccess.offsetexists.php
|
|
|
|
+ * @param mixed $offset <p>
|
|
|
|
+ * An offset to check for.
|
|
|
|
+ * </p>
|
|
|
|
+ * @return boolean true on success or false on failure.
|
|
|
|
+ * </p>
|
|
|
|
+ * <p>
|
|
|
|
+ * The return value will be casted to boolean if non-boolean was returned.
|
|
|
|
+ */
|
|
|
|
+ public function offsetExists($offset) {
|
|
|
|
+ return (isset($this->data[$offset]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * (PHP 5 >= 5.0.0)<br/>
|
|
|
|
+ * Offset to retrieve
|
|
|
|
+ *
|
|
|
|
+ * @link http://php.net/manual/en/arrayaccess.offsetget.php
|
|
|
|
+ * @param mixed $offset <p>
|
|
|
|
+ * The offset to retrieve.
|
|
|
|
+ * </p>
|
|
|
|
+ * @return mixed Can return all value types.
|
|
|
|
+ */
|
|
|
|
+ public function offsetGet($offset) {
|
|
|
|
+ return $this->get($offset);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * (PHP 5 >= 5.0.0)<br/>
|
|
|
|
+ * Offset to set
|
|
|
|
+ *
|
|
|
|
+ * @link http://php.net/manual/en/arrayaccess.offsetset.php
|
|
|
|
+ * @param mixed $offset <p>
|
|
|
|
+ * The offset to assign the value to.
|
|
|
|
+ * </p>
|
|
|
|
+ * @param mixed $value <p>
|
|
|
|
+ * The value to set.
|
|
|
|
+ * </p>
|
|
|
|
+ * @return void
|
|
|
|
+ */
|
|
|
|
+ public function offsetSet($offset, $value) {
|
|
|
|
+ $this->set($offset, $value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * (PHP 5 >= 5.0.0)<br/>
|
|
|
|
+ * Offset to unset
|
|
|
|
+ *
|
|
|
|
+ * @link http://php.net/manual/en/arrayaccess.offsetunset.php
|
|
|
|
+ * @param mixed $offset <p>
|
|
|
|
+ * The offset to unset.
|
|
|
|
+ * </p>
|
|
|
|
+ * @return void
|
|
|
|
+ */
|
|
|
|
+ public function offsetUnset($offset) {
|
|
|
|
+ if ($this->offsetExists($offset)) {
|
|
|
|
+ unset($this->data[$offset]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|