Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / orm / lib / Doctrine / ORM / Mapping / DefaultNamingStrategy.php
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
21 namespace Doctrine\ORM\Mapping;
22
23 /**
24  * The default NamingStrategy
25  *
26  * 
27  * @link    www.doctrine-project.org
28  * @since   2.3
29  * @author  Fabio B. Silva <fabio.bat.silva@gmail.com>
30  */
31 class DefaultNamingStrategy implements NamingStrategy
32 {
33     /**
34      * {@inheritdoc}
35      */
36     public function classToTableName($className)
37     {
38         if (strpos($className, '\\') !== false) {
39             return substr($className, strrpos($className, '\\') + 1);
40         }
41
42         return $className;
43     }
44
45     /**
46      * {@inheritdoc}
47      */
48     public function propertyToColumnName($propertyName)
49     {
50         return $propertyName;
51     }
52
53     /**
54      * {@inheritdoc}
55      */
56     public function referenceColumnName()
57     {
58         return 'id';
59     }
60
61     /**
62      * {@inheritdoc}
63      */
64     public function joinColumnName($propertyName)
65     {
66         return $propertyName . '_' . $this->referenceColumnName();
67     }
68
69     /**
70      * {@inheritdoc}
71      */
72     public function joinTableName($sourceEntity, $targetEntity, $propertyName = null)
73     {
74         return strtolower($this->classToTableName($sourceEntity) . '_' .
75                 $this->classToTableName($targetEntity));
76     }
77     
78     /**
79      * {@inheritdoc}
80      */
81     public function joinKeyColumnName($entityName, $referencedColumnName = null)
82     {
83         return strtolower($this->classToTableName($entityName) . '_' .
84                 ($referencedColumnName ?: $this->referenceColumnName()));
85     }
86 }