1<?php
2namespace Crossjoin\Css\Format\Rule;
3
4trait TraitDeclarations
5{
6    /**
7     * @var array Declaration array
8     */
9    protected $declarations = [];
10
11    /**
12     * Sets the declarations.
13     *
14     * @param DeclarationAbstract[]|DeclarationAbstract $declarations
15     * @return $this
16     */
17    public function setDeclarations($declarations)
18    {
19        $this->declarations = [];
20        if (!is_array($declarations)) {
21            $declarations = [$declarations];
22        }
23        foreach ($declarations as $declaration) {
24            $this->addDeclaration($declaration);
25        }
26
27        return $this;
28    }
29
30    /**
31     * Adds a declaration.
32     *
33     * @param DeclarationAbstract $declaration
34     * @return $this
35     */
36    public function addDeclaration(DeclarationAbstract $declaration)
37    {
38        // Overwrite an check for allowed instances
39        $this->declarations[] = $declaration;
40
41        return $this;
42    }
43
44    /**
45     * Gets an array of declarations.
46     *
47     * @return DeclarationAbstract[]
48     */
49    public function getDeclarations()
50    {
51        return $this->declarations;
52    }
53}