PHP Classes

File: DATA/SQLInt.php

Recommend this page to a friend!
  Classes of Martin Alterisio   DATA   DATA/SQLInt.php   Download  
File: DATA/SQLInt.php
Role: Class source
Content type: text/plain
Description: ANSI SQL Integer data type representation.
Class: DATA
Access data stored in MySQL tables like arrays
Author: By
Last change: + anonymous access
Date: 16 years ago
Size: 3,368 bytes
 

Contents

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

/**
 * ANSI SQL Integer data type representation.
 *
 * When inboxing, if the field cannot hold the desired value
 * {@link DATA_InvalidInt} is thrown.
 */
class DATA_SQLInt extends DATA_SQLType implements DATA_Number {
   
/**
     * The stored number.
     * @var int
     */
   
protected $number;
   
   
/**
     * Construct a sql integer type with an initial value (optional).
     *
     * Throws {@link DATA_InvalidInt} when the number to be stored is invalid.
     *
     * @param boolean $nullable True if the type is nullable.
     * @param null|int|string $number The stored number.
     */
   
public function __construct($nullable, $number = 0) {
       
$this->setNumber($number);
       
parent::__construct($nullable, is_null($number));
    }
   
   
/**
     * Returns the stored number.
     *
     * @return int The stored number.
     */
   
public function getNumber() {
        return
$this->number;
    }
   
   
/**
     * Sets the stored number.
     *
     * Throws {@link DATA_InvalidInt} when the number to be stored is invalid.
     *
     * @param int|string $number The stored number.
     */
   
public function setNumber($number) {
        if (
is_string($number)) {
           
$toInt = (int)$number;
            if ((string)
$toInt !== $number) {
                throw new
DATA_InvalidInt($number);
            }
        }
       
$this->number = (int)$number;
       
$this->setNotNull();
    }
   
    public function
setNull() {
       
parent::setNull();
       
$this->number = null;
    }
   
    public function
__toString() {
        return (string)
$this->number;
    }
   
    public function
outbox() {
        return
$this->number;
    }
   
   
/**
     * Adds this int to another and returns the result.
     *
     * Throws {@link DATA_InvalidInt}.
     *
     * @param DATA_Number $other The number to add.
     * @return DATA_SQLInt The result.
     */
   
public function add(DATA_Number $other) {
        return new
DATA_SQLInt($this->isNullable(), $this->number + $other->getNumber());
    }
   
   
/**
     * Substracts this int to another and returns the result.
     *
     * Throws {@link DATA_InvalidInt}.
     *
     * @param DATA_Number $other The number to substract.
     * @return DATA_SQLInt The result.
     */
   
public function substract(DATA_Number $other) {
        return new
DATA_SQLInt($this->isNullable(), $this->number - $other->getNumber());
    }
   
   
/**
     * Multiplies this int to another and returns the result.
     *
     * Throws {@link DATA_InvalidInt}.
     *
     * @param DATA_Number $other The number to multiply by.
     * @return DATA_SQLInt The result.
     */
   
public function multiply(DATA_Number $other) {
        return new
DATA_SQLInt($this->isNullable(), $this->number * $other->getNumber());
    }
   
   
/**
     * Divides this int to another and returns the result.
     *
     * Throws {@link DATA_InvalidInt}.
     *
     * @param DATA_Number $other The number to divide by.
     * @return DATA_SQLInt The result.
     */
   
public function divide(DATA_Number $other) {
        return new
DATA_SQLInt($this->isNullable(), (int)($this->number / $other->getNumber()));
    }
}
?>