vendor/mondator/src/Mandango/Mondator/Definition/Definition.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\Definition;
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
 * Represents a definition of a class.
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 Definition
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 $class;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
    private $parentClass;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
    private $interfaces;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    private $final;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
    private $abstract;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
    private $properties;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    private $methods;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    private $docComment;
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
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
     * Constructor.
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
     * @param string $class The class.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    public function __construct($class)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
        $this->setClass($class);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
        $this->interfaces = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
        $this->final = false;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
        $this->abstract = false;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
        $this->properties = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
        $this->methods = array();
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 the class.
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 $class The class.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    public function setClass($class)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
        $this->class = $class;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    }
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
     * Returns the class.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
     * @return string The class.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
    public function getClass()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        return $this->class;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
     * Returns the namespace.
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
     * @return string|null The namespace.
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
     * @api
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
    public function getNamespace()
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
        if (false !== $pos = strrpos($this->class, '\\')) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
            return substr($this->class, 0, $pos);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
        }
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
        return null;
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
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
     * Returns the class name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
     * @return string|null The class name.
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
     * @api
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
    public function getClassName()
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
        if (false !== $pos = strrpos($this->class, '\\')) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
            return substr($this->class, $pos + 1);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
        }
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
        return $this->class;
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
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
     * Set the parent class.
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
     * @param string $parentClass The parent class.
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
     * @api
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
    public function setParentClass($parentClass)
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
        $this->parentClass = $parentClass;
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
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
     * Returns the parent class.
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
     * @return string The parent class.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
     * @api
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
    public function getParentClass()
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
        return $this->parentClass;
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
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
     * Add an interface.
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
     * @param string $interface The interface.
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
     * @api
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
    public function addInterface($interface)
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
        $this->interfaces[] = $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
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
     * Set the interfaces.
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
     * @param array $interfaces The interfaces.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
    public function setInterfaces(array $interfaces)
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
        $this->interfaces = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
        foreach ($interfaces as $interface) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
            $this->addInterface($interface);
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
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
     * Returns the interfaces.
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
     * @return array The interfaces.
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
     * @api
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
    public function getInterfaces()
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
        return $this->interfaces;
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
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
     * Set if the class is final.
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
     * @param bool $final If the class is final.
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
     * @api
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
    public function setFinal($final)
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
        $this->final = (bool) $final;
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
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
     * Returns if the class is final.
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
     * @return bool Returns if the class is final.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
    public function isFinal()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
        return $this->final;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
     * Set if the class is abstract.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
     * @param bool $abstract If the class is abstract.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
    public function setAbstract($abstract)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
        $this->abstract = (bool) $abstract;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
     * Returns if the class is abstract.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
     * @return bool If the class is abstract.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
    public function isAbstract()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
        return $this->abstract;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
     * Add a property.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
     * @param Mandango\Mondator\Definition\Property $property The property.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
    public function addProperty(Property $property)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
        $this->properties[] = $property;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
     * Set the properties.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
     * @param array $properties An array of properties.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
    public function setProperties(array $properties)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
        $this->properties = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
        foreach ($properties as $name => $property) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
            $this->addProperty($property);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
     * Returns the properties.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
     * @return array The properties.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
    public function getProperties()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
        return $this->properties;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
     * Returns if a property exists by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
     * @param string $name The property name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
     * @return bool If the property exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
    public function hasPropertyByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
        foreach ($this->properties as $property) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
            if ($property->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
                return true;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
        return false;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
     * Returns a property by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
     * @param string $name The property name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
     * @return Mandango\Mondator\Definition\Property The property.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
     * @throws \InvalidArgumentException If the property does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
    public function getPropertyByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        foreach ($this->properties as $property) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
            if ($property->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
                return $property;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
        throw new \InvalidArgumentException(sprintf('The property "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
     * Remove property by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
     * @param string $name The property name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
     * @throws \InvalidArgumentException If the property does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
    public function removePropertyByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
        foreach ($this->properties as $key => $property) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
            if ($property->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
                unset($this->properties[$key]);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
                return;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
        throw new \InvalidArgumentException(sprintf('The property "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
     * Add a method.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
     * @param Mandango\Mondator\Definition\Method $method The method.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
    public function addMethod(Method $method)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
        $this->methods[] = $method;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
     * Set the methods.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
     * @param array $methods An array of methods.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
    public function setMethods(array $methods)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
        $this->methods = array();
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
        foreach ($methods as $name => $method) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
            $this->addMethod($method);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
     * Returns the methods.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
     * @return array The methods.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
    public function getMethods()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
        return $this->methods;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
     * Returns if exists a method by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
     * @param string $name The method name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
     * @return bool If the method exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
    public function hasMethodByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
        foreach ($this->methods as $method) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
            if ($method->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
                return true;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
        return false;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
     * Return a method by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
     * @param string $name The method name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
     * @return Mandango\Mondator\Definition\Method The method.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
     * @throws \InvalidArgumentException If the method does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
    public function getMethodByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
        foreach ($this->methods as $method) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
            if ($method->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
                return $method;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
        throw new \InvalidArgumentException(sprintf('The method "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
     * Remove a method by name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
     * @param string $name The method name.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
     * @throws \InvalidArgumentException If the method does not exists.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
    public function removeMethodByName($name)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
        foreach ($this->methods as $key => $method) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
            if ($method->getName() == $name) {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
                unset($this->methods[$key]);
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
                return;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
            }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
        }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
        throw new \InvalidArgumentException(sprintf('The method "%s" does not exists.', $name));
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
     * Set the doc comment.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
     * @param string|null $docComment The doc comment.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
    public function setDocComment($docComment)
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
        $this->docComment = $docComment;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
    /**
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
     * Returns the doc comment.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
     * @return string|null The doc comment.
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
     *
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
     * @api
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
     */
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
    public function getDocComment()
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
    {
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
        return $this->docComment;
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
    }
c85b9d1ddf19 first implementation of dynamic fields
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
}