# Dialect.class.php

Go to the documentation of this file.

    00001 <?php
    00002 /***************************************************************************
    00003  *   Copyright (C) 2005-2007 by Konstantin V. Arkhipov                     *
    00004  *                                                                         *
    00005  *   This program is free software; you can redistribute it and/or modify  *
    00006  *   it under the terms of the GNU Lesser General Public License as        *
    00007  *   published by the Free Software Foundation; either version 3 of the    *
    00008  *   License, or (at your option) any later version.                       *
    00009  *                                                                         *
    00010  ***************************************************************************/
    00011
    00018     abstract class /* ANSI's */ Dialect
    00019         extends Singleton
    00020         implements Instantiatable
    00021     {
    00022         abstract public function preAutoincrement(DBColumn $column);
    00023         abstract public function postAutoincrement(DBColumn $column);
    00024
    00025         abstract public function hasTruncate();
    00026         abstract public function hasMultipleTruncate();
    00027         abstract public function hasReturning();
    00028
    00035         public static function quoteField($field)
    00036         {
    00037             return self::quoteTable($field);
    00038         }
    00039
    00040         public static function quoteTable($table)
    00041         {
    00042             return '"'.$table.'"';
    00043         }
    00044
    00045         public static function toCasted($field, $type)
    00046         {
    00047             return "CAST ({$field} AS {$type})";
    00048         }
    00049
    00050         public static function timeZone($exist = false)
    00051         {
    00052             return
    00053                 $exist
    00054                     ? ' WITH TIME ZONE'
    00055                     : ' WITHOUT TIME ZONE';
    00056         }
    00057
    00058         public static function dropTableMode($cascade = false)
    00059         {
    00060             return
    00061                 $cascade
    00062                     ? ' CASCADE'
    00063                     : ' RESTRICT';
    00064         }
    00065
    00066         public function quoteBinary($data)
    00067         {
    00068             return $this->quoteValue($data);
    00069         }
    00070
    00071         public function unquoteBinary($data)
    00072         {
    00073             return $data;
    00074         }
    00075
    00076         public function typeToString(DataType $type)
    00077         {
    00078             return $type->getName();
    00079         }
    00080
    00081         public function toFieldString($expression)
    00082         {
    00083             return $this->toNeededString($expression, 'quoteField');
    00084         }
    00085
    00086         public function toValueString($expression)
    00087         {
    00088             return $this->toNeededString($expression, 'quoteValue');
    00089         }
    00090
    00091         private function toNeededString($expression, $method)
    00092         {
    00093             $string = null;
    00094
    00095             if (null !== $expression) {
    00096                 if ($expression instanceof DialectString) {
    00097                     if ($expression instanceof Query)
    00098                         $string .= '('.$expression->toDialectString($this).')';
    00099                     else
    00100                         $string .= $expression->toDialectString($this);
    00101                 } else {
    00102                     $string .= $this->$method($expression);
    00103                 }
    00104             }
    00105
    00106             return $string;
    00107         }
    00108
    00109         public function fieldToString($field)
    00110         {
    00111             return
    00112                 $field instanceof DialectString
    00113                     ? $field->toDialectString($this)
    00114                     : $this->quoteField($field);
    00115         }
    00116
    00117         public function valueToString($value)
    00118         {
    00119             return
    00120                 $value instanceof DBValue
    00121                     ? $value->toDialectString($this)
    00122                     : $this->quoteValue($value);
    00123         }
    00124
    00125         public function fullTextSearch($field, $words, $logic)
    00126         {
    00127             throw new UnimplementedFeatureException();
    00128         }
    00129
    00130         public function fullTextRank($field, $words, $logic)
    00131         {
    00132             throw new UnimplementedFeatureException();
    00133         }
    00134     }
    00135 ?>