Completed
Push — master ( e24a08...649c71 )
by Joshua
9s
created

EmbedsTrait::validateEmbed()

Size

Total Lines 1

Duplication

Lines 1
Ratio 100 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 1
loc 1
nc 1
1
<?php
2
3
namespace As3\Modlr\Metadata\Traits;
4
5
use As3\Modlr\Exception\MetadataException;
6
use As3\Modlr\Metadata\EmbeddedPropMetadata;
7
8
/**
9
 * Common embedded property metadata get, set, and add methods.
10
 *
11
 * @author Jacob Bare <[email protected]>
12
 */
13 View Code Duplication
trait EmbedsTrait
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
14
{
15
    /**
16
     * All embed fields assigned to this metadata object.
17
     * An embed is a " complex object/attribute" field that supports defining sub-attributes.
18
     *
19
     * @var EmbeddedPropMetadata[]
20
     */
21
    public $embeds = [];
22
23
    /**
24
     * Adds an embed field.
25
     *
26
     * @param   EmbeddedPropMetadata   $embed
27
     * @return  self
28
     */
29
    public function addEmbed(EmbeddedPropMetadata $embed)
30
    {
31
        $this->validateEmbed($embed);
32
        $this->embeds[$embed->getKey()] = $embed;
33
        ksort($this->embeds);
34
        return $this;
35
    }
36
37
    /**
38
     * Determines if an embed field exists.
39
     *
40
     * @param   string  $key
41
     * @return  bool
42
     */
43
    public function hasEmbed($key)
44
    {
45
        return null !== $this->getEmbed($key);
46
    }
47
48
    /**
49
     * Determines any embed fields exist.
50
     *
51
     * @return  bool
52
     */
53
    public function hasEmbeds()
54
    {
55
        return !empty($this->embeds);
56
    }
57
58
    /**
59
     * Gets an embed field.
60
     * Returns null if the embed does not exist.
61
     *
62
     * @param   string  $key
63
     * @return  EmbeddedPropMetadata|null
64
     */
65
    public function getEmbed($key)
66
    {
67
        if (!isset($this->embeds[$key])) {
68
            return null;
69
        }
70
        return $this->embeds[$key];
71
    }
72
73
    /**
74
     * Gets all embed fields.
75
     *
76
     * @return  EmbeddedPropMetadata[]
77
     */
78
    public function getEmbeds()
79
    {
80
        return $this->embeds;
81
    }
82
83
    /**
84
     * Validates that the embed can be added.
85
     *
86
     * @param   EmbeddedPropMetadata    $embed
87
     * @return  self
88
     * @throws  MetadataException
89
     */
90
    abstract protected function validateEmbed(EmbeddedPropMetadata $embed);
91
}
92