UTCDateTimeType   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 1
dl 0
loc 32
c 0
b 0
f 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A convertToDatabaseValue() 0 9 2
A getUtc() 0 4 2
1
<?php
2
declare(strict_types=1);
3
/**
4
 * Created by PhpStorm.
5
 * User: benedikt
6
 * Date: 1/2/18
7
 * Time: 9:22 PM
8
 */
9
10
namespace Tfboe\FmLib\Entity\Helpers;
11
12
use Doctrine\DBAL\Platforms\AbstractPlatform;
13
use Doctrine\DBAL\Types\DateTimeType;
14
15
/**
16
 * Class UTCDateTimeType
17
 * @package Tfboe\FmLib\Entity\Helpers
18
 */
19
class UTCDateTimeType extends DateTimeType
20
{
21
//<editor-fold desc="Fields">
22
  static private $utc;
23
//</editor-fold desc="Fields">
24
25
//<editor-fold desc="Public Methods">
26
  /**
27
   * {@inheritdoc}
28
   */
29
  public function convertToDatabaseValue($value, AbstractPlatform $platform)
30
  {
31
    if ($value instanceof \DateTime) {
32
      $value = clone $value;
33
      $value->setTimezone(self::getUtc());
34
    }
35
36
    return parent::convertToDatabaseValue($value, $platform);
37
  }
38
//</editor-fold desc="Public Methods">
39
40
//<editor-fold desc="Private Methods">
41
  /**
42
   * Gets the utc datetime zone
43
   * @return \DateTimeZone
44
   */
45
  private static function getUtc(): \DateTimeZone
46
  {
47
    return self::$utc ? self::$utc : self::$utc = new \DateTimeZone('UTC');
48
  }
49
//</editor-fold desc="Private Methods">
50
}