blob: 23f999d2506f9b8e3d6e4310772506270091c4b9 [file] [log] [blame]
<?php
/**
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
* @version //autogentag//
* @filesource
* @package DatabaseSchema
*/
/**
* A container to store a field definition in.
*
* @package DatabaseSchema
* @version //autogentag//
*/
class ezcDbSchemaField extends ezcBaseStruct
{
/**
* The type of this field
*
* @var string
*/
public $type;
/**
* The length of this field.
*
* @var integer
*/
public $length;
/**
* Whether this field can store NULL values.
*
* @var bool
*/
public $notNull;
/**
* The default value for this field.
*
* @var mixed
*/
public $default;
/**
* Whether this field is an auto increment field.
*
* @var bool
*/
public $autoIncrement;
/**
* Whether the values for this field contain unsigned integers.
*
* @var bool
*/
public $unsigned;
/**
* Constructs an ezcDbSchemaField object.
*
* @param string $type
* @param integer $length
* @param bool $notNull
* @param mixed $default
* @param bool $autoIncrement
* @param bool $unsigned
*/
function __construct( $type, $length = false, $notNull = false, $default = null, $autoIncrement = false, $unsigned = false )
{
$this->type = (string) $type;
$this->length = (int) $length;
$this->notNull = (bool) $notNull;
$this->default = $default;
$this->autoIncrement = (bool) $autoIncrement;
$this->unsigned = (bool) $unsigned;
if ( $type == 'integer' && $notNull && $default === null && $autoIncrement == false )
{
$this->default = 0;
}
if ( $type == 'integer' && is_numeric( $this->default ) )
{
$this->default = (int) $this->default;
}
}
static public function __set_state( array $array )
{
return new ezcDbSchemaField(
$array['type'], $array['length'], $array['notNull'],
$array['default'], $array['autoIncrement'], $array['unsigned']
);
}
}
?>