vendor/mondator/src/Mandango/Mondator/Container.php
author cavaliet
Fri, 24 Jan 2014 17:50:24 +0100
changeset 106 c1477ecf55e3
parent 18 c85b9d1ddf19
permissions -rw-r--r--
too much copy paste
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
18
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of Mandango.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * (c) Pablo Díez <pablodip@gmail.com>
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * This source file is subject to the MIT license that is bundled
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 * with this source code in the file LICENSE.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
 */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
namespace Mandango\Mondator;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
/**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * Container of definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 * @author Pablo Díez <pablodip@gmail.com>
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
 *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
 * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
 */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
class Container implements \ArrayAccess, \Countable, \IteratorAggregate
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
{
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
    private $definitions;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
     * Constructor.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    public function __construct()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
        $this->definitions = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
     * Returns if a definition name exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
     * @param string $name The definition name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
     * @return bool Returns if the definition name exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    public function hasDefinition($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        return isset($this->definitions[$name]);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
     * Set a definition.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
     * @param string                       $name       The definition name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
     * @param Mandango\Mondator\Definition $definition The definition.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    public function setDefinition($name, Definition $definition)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
        $this->definitions[$name] = $definition;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
     * Set the definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
     * @param array $definitions An array of definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    public function setDefinitions(array $definitions)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
        $this->definitions = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
        foreach ($definitions as $name => $definition) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
            $this->setDefinition($name, $definition);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
     * Returns a definition by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
     * @param string $name The definition name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
     * @return Mandango\Mondator\Definition The definition.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
     * @throws \InvalidArgumentException If the definition does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    public function getDefinition($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
        if (!$this->hasDefinition($name)) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
            throw new \InvalidArgumentException(sprintf('The definition "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
        return $this->definitions[$name];
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
     * Returns the definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
     * @return arary The definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
    public function getDefinitions()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
        return $this->definitions;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
     * Remove a definition
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
     * @param string $name The definition name
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
     * @throws \InvalidArgumentException If the definition does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
    public function removeDefinition($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
        if (!$this->hasDefinition($name)) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
            throw new \InvalidArgumentException(sprintf('The definition "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
        unset($this->definitions[$name]);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
     * Clear the definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
    public function clearDefinitions()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
        $this->definitions = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    /*
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
     * \ArrayAccess interface.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
    public function offsetExists($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
        return $this->hasDefinition($name);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
    public function offsetSet($name, $definition)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
        $this->setDefinition($name, $definition);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
    public function offsetGet($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
        return $this->getDefinition($name);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
    public function offsetUnset($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
        $this->removeDefinition($name);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
     * Returns the number of definitions (implements the \Countable interface).
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
     * @return integer The number of definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
    public function count()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
        return count($this->definitions);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
     * Returns an \ArrayIterator with the definitions (implements \IteratorAggregate interface).
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
     * @return \ArrayIterator An \ArrayIterator with the definitions.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
    public function getIterator()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
        return new \ArrayIterator($this->definitions);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
}