public function column($Name, $Type, $NullDefault = false, $KeyType = false)
{
if (is_null($NullDefault) || $NullDefault === true) {
$Null = true;
$Default = null;
} elseif ($NullDefault === false) {
$Null = false;
$Default = null;
} elseif (is_array($NullDefault)) {
$Null = val('Null', $NullDefault);
$Default = val('Default', $NullDefault, null);
} else {
$Null = false;
$Default = $NullDefault;
}
// Check the key type for validity. A column can be in many keys by specifying an array as key type.
$KeyTypes = (array) $KeyType;
$KeyTypes1 = array();
foreach ($KeyTypes as $KeyType1) {
$Parts = explode('.', $KeyType1, 2);
if (in_array($Parts[0], array('primary', 'key', 'index', 'unique', 'fulltext', false))) {
$KeyTypes1[] = $KeyType1;
}
}
if (count($KeyTypes1) == 0) {
$KeyType = false;
} elseif (count($KeyTypes1) == 1) {
$KeyType = $KeyTypes1[0];
} else {
$KeyType = $KeyTypes1;
}
$Column = $this->_createColumn($Name, $Type, $Null, $Default, $KeyType);
$this->_Columns[$Name] = $Column;
return $this;
}