Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
16.67% covered (danger)
16.67%
1 / 6
CRAP
67.92% covered (warning)
67.92%
36 / 53
Point
0.00% covered (danger)
0.00%
0 / 1
16.67% covered (danger)
16.67%
1 / 6
26.54
67.92% covered (warning)
67.92%
36 / 53
 __construct($lat = null, $lon = null, $ele = null, $time = null)
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
8 / 8
 __set($property, $value)
0.00% covered (danger)
0.00%
0 / 1
5.16
81.25% covered (warning)
81.25%
13 / 16
 getDateTime()
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 __get($property)
0.00% covered (danger)
0.00%
0 / 1
6.17
83.33% covered (warning)
83.33%
15 / 18
 __toString()
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 format( $latFormat = "%01.9f,", $lonFormat = "%01.9f,", $timeZone = 'UTC', $timeFormat = "Y-m-d\TH:i:s\Z", $eleFormat = "%01.1f,")
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 9
<?php
/**
 *
 */
namespace aae\math\geospatial {
    /**
     * @author Axel Ancona Esselmann
     * @package aae\geo
     */
    class Point {
        protected $timeZone = 'UTC';
        protected $ele = 0;
        protected $time = null;
        protected $lat = null;
        protected $lon = null;
        public function __construct($lat = null, $lon = null, $ele = null, $time = null) {
            date_default_timezone_set($this->timeZone);
            $this->__set("lat", $lat);
            $this->__set("lon", $lon);
            $this->__set("ele", $ele);
            if ($time !== null) {
                $this->__set("time", $time);
            }
        }
        public function __set($property, $value) {
            switch ($property) {
                case 'lat':
                    $this->lat = $value;
                    break;
                case 'lon':
                    $this->lon = $value;
                    break;
                case 'ele':
                    $this->ele = $value;
                    break;
                case 'time':
                    $this->time = new \DateTime($value);
                    break;
                default:
                    throw new \Exception("Trying to set property that does not exist: $property", 409141636);
                    break;
            }
            return $this;
        }
        public function getDateTime() {
            return $this->time;
        }
        public function __get($property) {
            switch ($property) {
                case 'lat':
                    $result = $this->lat;
                    break;
                case 'lon':
                    $result = $this->lon;
                    break;
                case 'ele':
                    $result = $this->ele;
                    break;
                case 'time':
                    if ($this->time != null) {
                        $result = $this->time->getTimestamp();
                    } else $result = null;
                    break;
                default:
                    throw new \Exception("Trying to get property that does not exist: $property", 409141637);
            }
            return $result;
        }
        public function __toString() {
            return $this->format();
        }
        public function format(
                                $latFormat = "%01.9f,",
                                $lonFormat = "%01.9f,",
                                $timeZone = 'UTC',
                                $timeFormat = "Y-m-d\TH:i:s\Z",
                                $eleFormat = "%01.1f,") {
            $latStr = sprintf($latFormat, $this->lat);
            $lonStr = sprintf($lonFormat, $this->lon);
            $eleStr = sprintf($eleFormat, $this->ele);
            if ($this->time !== null) {
                $timeStr = $this->time->format($timeFormat);
            } else $timeStr = "";
            date_default_timezone_set($timeZone);
            $result = $latStr.$lonStr.$eleStr.$timeStr;
            return $result;
        }
    }
}