00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 require_once 'creole/CreoleTypes.php';
00024
00032 class MySQLTypes extends CreoleTypes {
00033
00035 private static $typeMap = array(
00036 'tinyint' => CreoleTypes::TINYINT,
00037 'smallint' => CreoleTypes::SMALLINT,
00038 'mediumint' => CreoleTypes::SMALLINT,
00039 'int' => CreoleTypes::INTEGER,
00040 'integer' => CreoleTypes::INTEGER,
00041 'bigint' => CreoleTypes::BIGINT,
00042 'int24' => CreoleTypes::BIGINT,
00043 'real' => CreoleTypes::REAL,
00044 'float' => CreoleTypes::FLOAT,
00045 'decimal' => CreoleTypes::DECIMAL,
00046 'numeric' => CreoleTypes::NUMERIC,
00047 'double' => CreoleTypes::DOUBLE,
00048 'char' => CreoleTypes::CHAR,
00049 'varchar' => CreoleTypes::VARCHAR,
00050 'date' => CreoleTypes::DATE,
00051 'time' => CreoleTypes::TIME,
00052 'year' => CreoleTypes::YEAR,
00053 'datetime' => CreoleTypes::TIMESTAMP,
00054 'timestamp' => CreoleTypes::TIMESTAMP,
00055 'tinyblob' => CreoleTypes::BINARY,
00056 'blob' => CreoleTypes::VARBINARY,
00057 'mediumblob' => CreoleTypes::VARBINARY,
00058 'longblob' => CreoleTypes::VARBINARY,
00059 'longtext' => CreoleTypes::LONGVARCHAR,
00060 'tinytext' => CreoleTypes::VARCHAR,
00061 'mediumtext' => CreoleTypes::LONGVARCHAR,
00062 'text' => CreoleTypes::LONGVARCHAR,
00063 'enum' => CreoleTypes::CHAR,
00064 'set' => CreoleTypes::CHAR,
00065 );
00066
00068 private static $reverseMap = null;
00069
00076 public static function getType($nativeType)
00077 {
00078 $t = strtolower($nativeType);
00079 if (isset(self::$typeMap[$t])) {
00080 return self::$typeMap[$t];
00081 } else {
00082 return CreoleTypes::OTHER;
00083 }
00084 }
00085
00094 public static function getNativeType($creoleType)
00095 {
00096 if (self::$reverseMap === null) {
00097 self::$reverseMap = array_flip(self::$typeMap);
00098 }
00099 return @self::$reverseMap[$creoleType];
00100 }
00101
00102 }