Система управления «Сайт PRO»
Версия 20240107

Класс Base

Объект $Base: Cms\Root\Data\Base наследует Cms\Site\Base

Базовый класс для работы с произвольной базой данных

Исходный код
class Base extends \Cms\Site\Base { … }

Свойства

$data

$Base->data
Исходный код
    var $data;

Методы

__construct()

new Base($open=true);

Конструктор

Параметры:

ИмяОписание
$open

boolean открыть подключение

Исходный код
    function __construct($open = true) {
        parent::__construct();
        if ($open) $this->init();
    }

quote()

$Base->quote($value);

Экранирование специальных символов в строке и добавление кавычек

Параметры:

ИмяОписание
$value

string строка

Возвращает: string

Исходный код
    function quote($value) {
        return $this->quoteSQLite($value);
    }

quoteMySQL()

$Base->quoteMySQL($value);

Экранирование специальных символов в строке и добавление кавычек (MySQL)

Параметры:

ИмяОписание
$value

string строка

Возвращает: string

Исходный код
    function quoteMySQL($value) {
        return "'" . str_replace("\0", "\\0", addcslashes($value, "\\'")) . "'";
    }

quoteSQLite()

$Base->quoteSQLite($value);

Экранирование специальных символов в строке и добавление кавычек (SQLite)

Параметры:

ИмяОписание
$value

string строка

Возвращает: string

Исходный код
    function quoteSQLite($value) {
        return "'" . str_replace("'", "''", $value) . "'";
    }

escape()

$Base->escape($value);

Экранирование специальных символов в строке без добавления кавычек

Параметры:

ИмяОписание
$value

string строка

Возвращает: string

Исходный код
    function escape($value) {
        return substr($this->quote($value), 1, -1);
    }

query()

$Base->query($q);

Выполнение запроса и получение результата

Параметры:

ИмяОписание
$q

string запрос

Возвращает: object|false

Исходный код
    function query($q) {
        throw new \BadMethodCallException;
        return false;
    }

queryParamsArray()

$Base->queryParamsArray($query, $params);

Добавление параметров к запросу

Параметры:

ИмяОписание
$query

string запрос

$params

array параметры

Возвращает: string

Исходный код
    function queryParamsArray($query, $params) {
        return $this->queryParamsArraySQLite($query, $params);
    }

queryParamsArrayMySQL()

$Base->queryParamsArrayMySQL($query, $params);

Добавление параметров к запросу (MySQL)

Параметры:

ИмяОписание
$query

string запрос

$params

array параметры

Возвращает: string

Исходный код
    function queryParamsArrayMySQL($query, $params) {
        $q = '';
        $l = strlen($query);
        $is_s = false; // after "\"
        $is_q = false; // after "'"
        $is_f = false; // after "`"
        for ($i = 0; $i < $l; $i ++) {
            $c = $query[$i];
            if ($c === '\\') {
                $is_s = !$is_s;
            } elseif ($c === "'") {
                if ($is_s) {
                    $is_s = false;
                } else {
                    $is_q = !$is_q;
                }
            } elseif ($c === '`') {
                if ($is_s) {
                    $is_s = false;
                } else {
                    $is_f = !$is_f;
                }
            } elseif ($c === '?') {
                if ($is_s) {
                    $is_s = false;
                } elseif (!$is_q && !$is_f) {
                    $c = $this->quoteMySQL(array_shift($params));
                }
            }
            $q .= $c;
        }
        return $q;
    }

queryParamsArraySQLite()

$Base->queryParamsArraySQLite($query, $params);

Добавление параметров к запросу (SQLite)

Параметры:

ИмяОписание
$query

string запрос

$params

array параметры

Возвращает: string

Исходный код
    function queryParamsArraySQLite($query, $params) {
        $q = '';
        $l = strlen($query);
        $is_q = false; // after "'"
        $is_f = false; // after "`"
        for ($i = 0; $i < $l; $i ++) {
            $c = $query[$i];
            if ($c === "'") {
                $is_q = !$is_q;
            } elseif ($c === '`') {
                $is_f = !$is_f;
            } elseif ($c === '?') {
                if (!$is_q && !$is_f) {
                    $c = $this->quoteSQLite(array_shift($params));
                }
            }
            $q .= $c;
        }
        return $q;
    }

numRows()

$Base->numRows(&$result);

Количество строк результата запроса

Параметры:

ИмяОписание
$result

object; array результат запроса

Возвращает: int

Исходный код
    function numRows(&$result) {
        if ($result instanceof \PDOStatement) return $result->rowCount();
        if (is_array($result)) return count($result);
        return 0;
    }

fetch()

$Base->fetch(&$result);

Получение следующей строки результата запроса

Параметры:

ИмяОписание
$result

object; array результат запроса

Возвращает: array|false|null

Исходный код
    function fetch(&$result) {
        if ($result instanceof \PDOStatement) return $result->fetch(\PDO::FETCH_ASSOC);
        if (is_array($result)) return array_shift($result);
        return false;
    }

fetchArray()

$Base->fetchArray(&$result);

Получение следующей строки результата запроса

Параметры:

ИмяОписание
$result

object; array результат запроса

Возвращает: array|false|null

Исходный код
    function fetchArray(&$result) {
        if ($result instanceof \PDOStatement) return $result->fetch(\PDO::FETCH_NUM);
        if (is_array($result)) return array_values(array_shift($result));
        return false;
    }

replaceBackticksDoubleQuotes()

$Base->replaceBackticksDoubleQuotes($query);

Замена символов «`» на «"» (MS SQL Server, PostgreSQL)

Параметры:

ИмяОписание
$query

string запрос

Возвращает: string

Исходный код
    function replaceBackticksDoubleQuotes($query) {
        $r = '';
        $is_s = false;
        foreach (explode('`', $query) as $i => $p) {
            if (substr_count($p, "'") % 2) {
                $is_s = !$is_s;
                if ($i) $r .= '`';
                $r .= $p;
            } elseif ($is_s) {
                if ($i) $r .= '`';
                $r .= $p;
            } else {
                if ($i) $r .= '"';
                $r .= $p;
            }
        }
        return $r;
    }

qLike()

$Base->qLike($text);

Экранирование специальных символов в строке и экранирование масок символов

Параметры:

ИмяОписание
$text

string строка

Возвращает: string

Исходный код
    function qLike($text) {
        return str_replace(array( '\\', '_', '%' ), array( '\\\\', '\\_', '\\%' ), $this->escape($text));
    }

qList()

$Base->qList($a);

Представление списка значений в виде строки

Параметры:

ИмяОписание
$a

array массив

Возвращает: string

Исходный код
    function qList($a) {
        if (!$a) return 'NULL';
        if (!is_array($a)) $a = array($a);
        foreach ($a as $k => $v) $a[$k] = $this->quote($v);
        return implode(', ', $a);
    }

isResult()

$Base->isResult(&$result);

Является ли параметр корректным результатом запроса

Параметры:

ИмяОписание
$result

any результат запроса

Возвращает: boolean

Исходный код
    function isResult(&$result) {
        if (is_object($result)) return true;
        if (is_array($result)) return true;
        return false;
    }

dLookup()

$Base->dLookup($q);

Получение первого поля первой строки результата запроса

Параметры:

ИмяОписание
$q

string запрос

Возвращает: string|null

Исходный код
    function dLookup($q) {
        if (func_num_args() > 1) {
            $args = func_get_args();
            array_shift($args);
            $q = $this->queryParamsArray($q, $args);
        }
        $result = $this->query($q);
        if ($result) {
            $row = $this->fetch($result);
            $this->finish($result);
            if ($row) return array_shift($row);
        }
    }

getRow()

$Base->getRow($q);

Получение одной строки результата запроса

Параметры:

ИмяОписание
$q

string запрос

Возвращает: array|null

Исходный код
    function getRow($q) {
        if (func_num_args() > 1) {
            $args = func_get_args();
            array_shift($args);
            $q = $this->queryParamsArray($q, $args);
        }
        $result = $this->query($q);
        if ($result) {
            $row = $this->fetch($result);
            $this->finish($result);
            return $row;
        }
    }

getRows()

$Base->getRows($q);

Получение всех строк результата запроса

Параметры:

ИмяОписание
$q

string запрос

Возвращает: array

Исходный код
    function getRows($q) {
        if (func_num_args() > 1) {
            $args = func_get_args();
            array_shift($args);
            $q = $this->queryParamsArray($q, $args);
        }
        $result = $this->query($q);
        $r = array();
        if ($result) {
            while ($row = $this->fetch($result)) $r[] = $row;
            $this->finish($result);
        }
        return $r;
    }

finish()

$Base->finish(&$result);

Закрытие результата запроса

Параметры:

ИмяОписание
$result

object; array результат запроса

Исходный код
    function finish(&$result) {
        if ($result instanceof \PDOStatement) $result->closeCursor();
    }

insertId()

$Base->insertId();

Значение параметра auto_increment последнего запроса

Возвращает: int|null

Исходный код
    function insertId() {
        if ($this->data instanceof \PDO) return $this->data->lastInsertId();
    }

sql()

$Base->sql();

Создание объекта запроса

Возвращает: Cms\Root\Sql

Исходный код
    function sql() {
        return $this->Main()->create('sql');
    }

select()

$Base->select($what=' *', $table='item', $where=null, $order=null, $limit=null);

Создание объекта запроса SELECT

Параметры:

ИмяОписание
$what

поля

$table

таблица

$where

условие

$order

сортировка

$limit

количество

Возвращает: Cms\Root\Sql

Исходный код
    function select($what = '*', $table = 'item', $where = null, $order = null, $limit = null) {
        return $this->sql()->select($what, $table, $where, $order, $limit);
    }

beginTransaction()

$Base->beginTransaction();

Начало транзакции

Возвращает: boolean

Исходный код
    function beginTransaction() {
        if ($this->data instanceof \PDO) return $this->data->beginTransaction();
        return false;
    }

commit()

$Base->commit();

Подтверждение транзакции

Возвращает: boolean

Исходный код
    function commit() {
        if ($this->data instanceof \PDO) return $this->data->commit();
        return false;
    }

rollback()

$Base->rollback();

Откат транзакции

Возвращает: boolean

Исходный код
    function rollback() {
        if ($this->data instanceof \PDO) return $this->data->rollback();
        return false;
    }

tables()

$Base->tables();

Список таблиц и их определений

Возвращает: array

Исходный код
    function tables() {
        $r = array();
        return $r;
    }

fields()

$Base->fields($result);

Получение полей запроса

Параметры:

ИмяОписание
$result

object; array результат запроса

Возвращает: array

Исходный код
    function fields($result) {
        $r = array();
        if (is_array($result)) return array_keys(array_shift(array_values($result)));
        return $r;
    }

tableExists()

$Base->tableExists(Table $Table);
Исходный код
    function tableExists(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableFieldExists()

$Base->tableFieldExists(Field $Field);
Исходный код
    function tableFieldExists(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tablePrimaryKey()

$Base->tablePrimaryKey(Table $Table);
Исходный код
    function tablePrimaryKey(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableUniqueExists()

$Base->tableUniqueExists(Field $Field);
Исходный код
    function tableUniqueExists(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableIndexExists()

$Base->tableIndexExists(Field $Field);
Исходный код
    function tableIndexExists(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableCreate()

$Base->tableCreate(Table $Table);
Исходный код
    function tableCreate(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlter()

$Base->tableAlter(Table $Table);
Исходный код
    function tableAlter(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterFieldAdd()

$Base->tableAlterFieldAdd(Field $Field);
Исходный код
    function tableAlterFieldAdd(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterFieldChange()

$Base->tableAlterFieldChange(Field $Field);
Исходный код
    function tableAlterFieldChange(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterFieldDrop()

$Base->tableAlterFieldDrop(Field $Field);
Исходный код
    function tableAlterFieldDrop(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterPrimaryKeyAdd()

$Base->tableAlterPrimaryKeyAdd(Table $Table);
Исходный код
    function tableAlterPrimaryKeyAdd(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterPrimaryKeyDrop()

$Base->tableAlterPrimaryKeyDrop(Table $Table);
Исходный код
    function tableAlterPrimaryKeyDrop(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterUniqueAdd()

$Base->tableAlterUniqueAdd(Field $Field);
Исходный код
    function tableAlterUniqueAdd(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterUniqueDrop()

$Base->tableAlterUniqueDrop(Field $Field);
Исходный код
    function tableAlterUniqueDrop(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterIndexAdd()

$Base->tableAlterIndexAdd(Field $Field);
Исходный код
    function tableAlterIndexAdd(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableAlterIndexDrop()

$Base->tableAlterIndexDrop(Field $Field);
Исходный код
    function tableAlterIndexDrop(Field $Field) {
        throw new \BadMethodCallException;
        return false;
    }

tableDrop()

$Base->tableDrop(Table $Table);
Исходный код
    function tableDrop(Table $Table) {
        throw new \BadMethodCallException;
        return false;
    }