Version 1
[yaffs-website] / vendor / gabordemooij / redbean / RedBeanPHP / SimpleModel.php
diff --git a/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php b/vendor/gabordemooij/redbean/RedBeanPHP/SimpleModel.php
new file mode 100755 (executable)
index 0000000..b7940f4
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+
+namespace RedBeanPHP;
+
+use RedBeanPHP\OODBBean as OODBBean;
+
+/**
+ * SimpleModel
+ * Base Model For All RedBeanPHP Models using FUSE.
+ *
+ * RedBeanPHP FUSE is a mechanism to connect beans to posthoc
+ * models. Models are connected to beans by naming conventions.
+ * Actions on beans will result in actions on models.
+ *
+ * @file       RedBeanPHP/SimpleModel.php
+ * @author     Gabor de Mooij and the RedBeanPHP Team
+ * @license    BSD/GPLv2
+ *
+ * @copyright
+ * copyright (c) G.J.G.T. (Gabor) de Mooij and the RedBeanPHP Community
+ * This source file is subject to the BSD/GPLv2 License that is bundled
+ * with this source code in the file license.txt.
+ */
+class SimpleModel
+{
+       /**
+        * @var OODBBean
+        */
+       protected $bean;
+
+       /**
+        * Used by FUSE: the ModelHelper class to connect a bean to a model.
+        * This method loads a bean in the model.
+        *
+        * @param OODBBean $bean bean to load
+        *
+        * @return void
+        */
+       public function loadBean( OODBBean $bean )
+       {
+               $this->bean = $bean;
+       }
+
+       /**
+        * Magic Getter to make the bean properties available from
+        * the $this-scope.
+        *
+        * @note this method returns a value, not a reference!
+        *       To obtain a reference unbox the bean first!
+        *
+        * @param string $prop property to get
+        *
+        * @return mixed
+        */
+       public function __get( $prop )
+       {
+               return $this->bean->$prop;
+       }
+
+       /**
+        * Magic Setter.
+        * Sets the value directly as a bean property.
+        *
+        * @param string $prop  property to set value of
+        * @param mixed  $value value to set
+        *
+        * @return void
+        */
+       public function __set( $prop, $value )
+       {
+               $this->bean->$prop = $value;
+       }
+
+       /**
+        * Isset implementation.
+        * Implements the isset function for array-like access.
+        *
+        * @param  string $key key to check
+        *
+        * @return boolean
+        */
+       public function __isset( $key )
+       {
+               return isset( $this->bean->$key );
+       }
+
+       /**
+        * Box the bean using the current model.
+        * This method wraps the current bean in this model.
+        * This method can be reached using FUSE through a simple
+        * OODBBean. The method returns a RedBeanPHP Simple Model.
+        * This is useful if you would like to rely on PHP type hinting.
+        * You can box your beans before passing them to functions or methods
+        * with typed parameters.
+        *
+        * @return SimpleModel
+        */
+       public function box()
+       {
+               return $this;
+       }
+
+       /**
+        * Unbox the bean from the model.
+        * This method returns the bean inside the model.
+        *
+        * @return OODBBean
+        */
+       public function unbox()
+       {
+               return $this->bean;
+       }
+}