diff options
Diffstat (limited to 'management-interface/lib/magic.php')
-rw-r--r-- | management-interface/lib/magic.php | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/management-interface/lib/magic.php b/management-interface/lib/magic.php new file mode 100644 index 0000000..d17d180 --- /dev/null +++ b/management-interface/lib/magic.php @@ -0,0 +1,140 @@ +<?php + +/* + Copyright (c) 2009-2014 F3::Factory/Bong Cosca, All rights reserved. + + This file is part of the Fat-Free Framework (http://fatfree.sf.net). + + THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF + ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR + PURPOSE. + + Please see the license.txt file for more information. +*/ + +//! PHP magic wrapper +abstract class Magic implements ArrayAccess { + + /** + * Return TRUE if key is not empty + * @return bool + * @param $key string + **/ + abstract function exists($key); + + /** + * Bind value to key + * @return mixed + * @param $key string + * @param $val mixed + **/ + abstract function set($key,$val); + + /** + * Retrieve contents of key + * @return mixed + * @param $key string + **/ + abstract function get($key); + + /** + * Unset key + * @return NULL + * @param $key string + **/ + abstract function clear($key); + + /** + * Return TRUE if property has public/protected visibility + * @return bool + * @param $key string + **/ + private function visible($key) { + if (property_exists($this,$key)) { + $ref=new ReflectionProperty(get_class($this),$key); + $out=!$ref->isprivate(); + unset($ref); + return $out; + } + return FALSE; + } + + /** + * Convenience method for checking property value + * @return mixed + * @param $key string + **/ + function offsetexists($key) { + return $this->visible($key)?isset($this->$key):$this->exists($key); + } + + /** + * Alias for offsetexists() + * @return mixed + * @param $key string + **/ + function __isset($key) { + return $this->offsetexists($key); + } + + /** + * Convenience method for assigning property value + * @return mixed + * @param $key string + * @param $val scalar + **/ + function offsetset($key,$val) { + return $this->visible($key)?($this->key=$val):$this->set($key,$val); + } + + /** + * Alias for offsetset() + * @return mixed + * @param $key string + * @param $val scalar + **/ + function __set($key,$val) { + return $this->offsetset($key,$val); + } + + /** + * Convenience method for retrieving property value + * @return mixed + * @param $key string + **/ + function offsetget($key) { + return $this->visible($key)?$this->$key:$this->get($key); + } + + /** + * Alias for offsetget() + * @return mixed + * @param $key string + **/ + function __get($key) { + return $this->offsetget($key); + } + + /** + * Convenience method for checking property value + * @return NULL + * @param $key string + **/ + function offsetunset($key) { + if ($this->visible($key)) + unset($this->$key); + else + $this->clear($key); + } + + /** + * Alias for offsetunset() + * @return NULL + * @param $key string + **/ + function __unset($key) { + $this->offsetunset($key); + } + +} |