Access.php 5.32 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

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

        return $this;
    }
53

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

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

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

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

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

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

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

lsmith's avatar
lsmith committed
143 144 145 146 147
    /**
     * unset a given offset
     * @see set, offsetSet, __set
     * @param mixed $offset
     */
lsmith's avatar
lsmith committed
148 149
    public function offsetUnset($offset)
    {
lsmith's avatar
lsmith committed
150 151
        return $this->remove($offset);
    }
152 153 154 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

    /**
     * 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
210
}