PHP Classes

File: DATA/MySQL5/SQLDatetimeFactory.php

Recommend this page to a friend!
  Classes of Martin Alterisio   DATA   DATA/MySQL5/SQLDatetimeFactory.php   Download  
File: DATA/MySQL5/SQLDatetimeFactory.php
Role: Class source
Content type: text/plain
Description: A concrete factory for inboxing string with mysql datetime format into datetime objects.
Class: DATA
Access data stored in MySQL tables like arrays
Author: By
Last change: + anonymous accesss
Date: 16 years ago
Size: 1,604 bytes
 

Contents

Class file image Download
<?php
/**
 * @package DATA
 */

/**
 * A concrete factory for inboxing string with mysql datetime format
 * into datetime objects.
 */
class DATA_MySQL5_SQLDatetimeFactory extends DATA_SQLTypeFactory {
   
/**
     * Flags the type to nullable or not nullable.
     * @var boolean
     */
   
private $nullable;
   
   
/**
     * Constructor.
     *
     * @param boolean $nullable True if the type is nullable.
     */
   
public function __construct($nullable) {
       
$this->nullable = $nullable;
    }
   
   
/**
     * Inboxes a value.
     *
     * Throws {@link DATA_InvalidDatetime}.
     *
     * @param mixed $value The value.
     * @return DATA_SQLDatetime Inboxed value.
     */
   
public function inbox($value) {
        if (
$value instanceof DATA_SQLDatetime) {
            if (
$this->nullable == $value->isNullable()) {
                return clone
$value;
            }
        }
        if (
$value instanceof DATA_SQLType) {
           
$value = $value->outbox();
        }
        if (
$value === null) {
            return new
DATA_SQLDate($this->nullable);
        }
        if (!
preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2} [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$/', $value)) {
            throw new
DATA_InvalidDatetime($value);
        }
        list(
$date, $time) = explode(' ', $value);
        list(
$year, $month, $day) = explode('-', $date);
        list(
$hour, $minutes, $seconds) = explode(':', $time);
        return new
DATA_SQLDatetime($this->nullable, $year, $month, $day, $hour, $minutes, $seconds);
    }
}
?>