Rajout de doctrine/orm
[zf2.biz/galerie.git] / vendor / doctrine / dbal / lib / Doctrine / DBAL / Types / VarDateTimeType.php
1 <?php
2 /*
3  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
5  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
6  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
12  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14  *
15  * This software consists of voluntary contributions made by many individuals
16  * and is licensed under the MIT license. For more information, see
17  * <http://www.doctrine-project.org>.
18  */
19
20
21 namespace Doctrine\DBAL\Types;
22
23 use Doctrine\DBAL\Platforms\AbstractPlatform;
24
25 /**
26  * Variable DateTime Type using date_create() instead of DateTime::createFromFormat()
27  *
28  * This type has performance implications as it runs twice as long as the regular
29  * {@see DateTimeType}, however in certain PostgreSQL configurations with
30  * TIMESTAMP(n) columns where n > 0 it is necessary to use this type.
31  *
32  * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
33  * @link        www.doctrine-project.com
34  * @since       2.0
35  * @author      Benjamin Eberlei <kontakt@beberlei.de>
36  * @author      Guilherme Blanco <guilhermeblanco@hotmail.com>
37  * @author      Jonathan Wage <jonwage@gmail.com>
38  * @author      Roman Borschel <roman@code-factory.org>
39  */
40 class VarDateTimeType extends DateTimeType
41 {
42     /**
43      * @throws ConversionException
44      * @param string $value
45      * @param AbstractPlatform $platform
46      * @return \DateTime
47      */
48     public function convertToPHPValue($value, AbstractPlatform $platform)
49     {
50         if ($value === null || $value instanceof \DateTime) {
51             return $value;
52         }
53
54         $val = date_create($value);
55         if ( ! $val) {
56             throw ConversionException::conversionFailed($value, $this->getName());
57         }
58         return $val;
59     }
60 }