1<?php
2
3/*
4 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
5 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
6 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
12 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15 *
16 * This software consists of voluntary contributions made by many individuals
17 * and is licensed under the MIT license. For more information, see
18 * <http://www.doctrine-project.org>.
19 */
20
21namespace Doctrine\ORM\Cache;
22
23/**
24 * Defines entity classes roles to be stored in the cache region.
25 *
26 * @since   2.5
27 * @author  Fabio B. Silva <fabio.bat.silva@gmail.com>
28 */
29class EntityCacheKey extends CacheKey
30{
31    /**
32     * READ-ONLY: Public only for performance reasons, it should be considered immutable.
33     *
34     * @var array The entity identifier
35     */
36    public $identifier;
37
38    /**
39     * READ-ONLY: Public only for performance reasons, it should be considered immutable.
40     *
41     * @var string The entity class name
42     */
43    public $entityClass;
44
45    /**
46     * @param string $entityClass The entity class name. In a inheritance hierarchy it should always be the root entity class.
47     * @param array  $identifier  The entity identifier
48     */
49    public function __construct($entityClass, array $identifier)
50    {
51        ksort($identifier);
52
53        $this->identifier  = $identifier;
54        $this->entityClass = $entityClass;
55        $this->hash        = str_replace('\\', '.', strtolower($entityClass) . '_' . implode(' ', $identifier));
56    }
57}
58