Access.php 5.33 KB
Newer Older
lsmith's avatar
lsmith committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
<?php
/*
 *  $Id$
 *
 * 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
 * OWNER 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.
 *
 * This software consists of voluntary contributions made by many individuals
 * and is licensed under the LGPL. For more information, see
19
 * <http://www.phpdoctrine.org>.
lsmith's avatar
lsmith committed
20
 */
21 22

#namespace Doctrine::ORM;
23

lsmith's avatar
lsmith committed
24 25 26 27 28 29 30
/**
 * Doctrine_Access
 *
 * the purpose of Doctrine_Access is to provice array access
 * and property overload interface for subclasses
 *
 * @package     Doctrine
31
 * @subpackage  Access
lsmith's avatar
lsmith committed
32
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
33
 * @link        www.phpdoctrine.org
lsmith's avatar
lsmith committed
34 35
 * @since       1.0
 * @version     $Revision$
romanb's avatar
romanb committed
36
 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
romanb's avatar
romanb committed
37
 * @todo Remove.
lsmith's avatar
lsmith committed
38
 */
39
abstract class Doctrine_Access implements ArrayAccess
lsmith's avatar
lsmith committed
40
{
lsmith's avatar
lsmith committed
41 42 43 44 45 46 47
    /**
     * setArray
     *
     * @param array $array          an array of key => value pairs
     * @since 1.0
     * @return Doctrine_Access
     */
lsmith's avatar
lsmith committed
48 49
    public function setArray(array $array)
    {
lsmith's avatar
lsmith committed
50 51
        foreach ($array as $k=>$v) {
            $this->set($k,$v);
zYne's avatar
zYne committed
52
        }
lsmith's avatar
lsmith committed
53 54 55

        return $this;
    }
56

lsmith's avatar
lsmith committed
57 58 59 60 61 62 63 64 65
    /**
     * __set        an alias of set()
     *
     * @see set, offsetSet
     * @param $name
     * @param $value
     * @since 1.0
     * @return void
     */
lsmith's avatar
lsmith committed
66 67
    public function __set($name,$value)
    {
lsmith's avatar
lsmith committed
68 69
        $this->set($name,$value);
    }
70

lsmith's avatar
lsmith committed
71 72 73 74 75 76 77 78
    /**
     * __get -- an alias of get()
     *
     * @see get,  offsetGet
     * @param mixed $name
     * @since 1.0
     * @return mixed
     */
lsmith's avatar
lsmith committed
79 80
    public function __get($name)
    {
lsmith's avatar
lsmith committed
81 82
        return $this->get($name);
    }
83

lsmith's avatar
lsmith committed
84 85 86 87 88 89 90
    /**
     * __isset()
     *
     * @param string $name
     * @since 1.0
     * @return boolean          whether or not this object contains $name
     */
lsmith's avatar
lsmith committed
91 92
    public function __isset($name)
    {
lsmith's avatar
lsmith committed
93 94
        return $this->contains($name);
    }
95

lsmith's avatar
lsmith committed
96 97 98 99 100 101 102
    /**
     * __unset()
     *
     * @param string $name
     * @since 1.0
     * @return void
     */
lsmith's avatar
lsmith committed
103 104
    public function __unset($name)
    {
lsmith's avatar
lsmith committed
105 106
        return $this->remove($name);
    }
107

lsmith's avatar
lsmith committed
108
    /**
109 110
     * Check if an offsetExists. Alias for contains.
     *
lsmith's avatar
lsmith committed
111 112 113
     * @param mixed $offset
     * @return boolean          whether or not this object contains $offset
     */
lsmith's avatar
lsmith committed
114 115
    public function offsetExists($offset)
    {
lsmith's avatar
lsmith committed
116 117
        return $this->contains($offset);
    }
118

lsmith's avatar
lsmith committed
119 120
    /**
     * offsetGet    an alias of get()
121
     *
lsmith's avatar
lsmith committed
122 123 124 125
     * @see get,  __get
     * @param mixed $offset
     * @return mixed
     */
lsmith's avatar
lsmith committed
126 127
    public function offsetGet($offset)
    {
lsmith's avatar
lsmith committed
128 129
        return $this->get($offset);
    }
130

lsmith's avatar
lsmith committed
131 132 133 134 135 136 137
    /**
     * sets $offset to $value
     * @see set,  __set
     * @param mixed $offset
     * @param mixed $value
     * @return void
     */
lsmith's avatar
lsmith committed
138 139
    public function offsetSet($offset, $value)
    {
lsmith's avatar
lsmith committed
140
        if ( ! isset($offset)) {
141
            return $this->add($value);
lsmith's avatar
lsmith committed
142
        }
143
        return $this->set($offset, $value);
lsmith's avatar
lsmith committed
144
    }
145

lsmith's avatar
lsmith committed
146 147 148 149 150
    /**
     * unset a given offset
     * @see set, offsetSet, __set
     * @param mixed $offset
     */
lsmith's avatar
lsmith committed
151 152
    public function offsetUnset($offset)
    {
lsmith's avatar
lsmith committed
153 154
        return $this->remove($offset);
    }
155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212

    /**
     * Remove the element with the specified offset
     *
     * @param mixed $offset The offset to remove
     * @return boolean True if removed otherwise false
     */
    public function remove($offset)
    {
        throw new Doctrine_Exception('Remove is not supported for ' . get_class($this));
    }

    /**
     * Return the element with the specified offset
     *
     * @param mixed $offset The offset to return
     * @return mixed The value of the return object 
     */
    public function get($offset)
    {
        throw new Doctrine_Exception('Get is not supported for ' . get_class($this));
    }

    /**
     * Set the offset to the value
     *
     * @param mixed $offset The offset to set
     * @param mixed $value The value to set the offset to
     *
     */
    public function set($offset, $value)
    {
        throw new Doctrine_Exception('Set is not supported for ' . get_class($this));
    }


    /**
     * Check if the specified offset exists 
     * 
     * @param mixed $offset The offset to check
     * @return boolean True if exists otherwise false
     */
    public function contains($offset)
    {
        throw new Doctrine_Exception('Contains is not supported for ' . get_class($this));
    }


    /**
     * Add the value  
     * 
     * @param mixed $value The value to add 
     * @return void
     */
    public function add($value)
    {
        throw new Doctrine_Exception('Add is not supported for ' . get_class($this));
    }
lsmith's avatar
lsmith committed
213
}