%PDF- %PDF-
Direktori : /www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/ |
Current File : //www/varak.net/losik.varak.net/vendor/dibi/dibi/src/Dibi/dibi.php |
<?php /** * This file is part of the Dibi, smart database abstraction layer (https://dibiphp.com) * Copyright (c) 2005 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); /** * Static container class for Dibi connections. * * @method static void disconnect() * @method static Dibi\Result query(...$args) * @method static Dibi\Result nativeQuery(...$args) * @method static bool test(...$args) * @method static Dibi\DataSource dataSource(...$args) * @method static Dibi\Row|null fetch(...$args) * @method static array fetchAll(...$args) * @method static mixed fetchSingle(...$args) * @method static array fetchPairs(...$args) * @method static int getAffectedRows() * @method static int getInsertId(string $sequence = null) * @method static void begin(string $savepoint = null) * @method static void commit(string $savepoint = null) * @method static void rollback(string $savepoint = null) * @method static mixed transaction(callable $callback) * @method static Dibi\Reflection\Database getDatabaseInfo() * @method static Dibi\Fluent command() * @method static Dibi\Fluent select(...$args) * @method static Dibi\Fluent update(string|string[] $table, array $args) * @method static Dibi\Fluent insert(string $table, array $args) * @method static Dibi\Fluent delete(string $table) * @method static Dibi\HashMap getSubstitutes() * @method static int loadFile(string $file) */ class dibi { use Dibi\Strict; public const AFFECTED_ROWS = 'a', IDENTIFIER = 'n'; /** version */ public const VERSION = '4.2.6'; /** sorting order */ public const ASC = 'ASC', DESC = 'DESC'; /** @var string|null Last SQL command @see dibi::query() */ public static $sql; /** @var float|null Elapsed time for last query */ public static $elapsedTime; /** @var float Elapsed time for all queries */ public static $totalTime; /** @var int Number or queries */ public static $numOfQueries = 0; /** @var Dibi\Connection[] Connection registry storage for Dibi\Connection objects */ private static $registry = []; /** @var Dibi\Connection Current connection */ private static $connection; /** * Static class - cannot be instantiated. */ final public function __construct() { throw new LogicException('Cannot instantiate static class ' . static::class); } /********************* connections handling ****************d*g**/ /** * Creates a new Connection object and connects it to specified database. * @param array $config connection parameters * @throws Dibi\Exception */ public static function connect($config = [], string $name = '0'): Dibi\Connection { return self::$connection = self::$registry[$name] = new Dibi\Connection($config, $name); } /** * Returns true when connection was established. */ public static function isConnected(): bool { return (self::$connection !== null) && self::$connection->isConnected(); } /** * Retrieve active connection. * @throws Dibi\Exception */ public static function getConnection(?string $name = null): Dibi\Connection { if ($name === null) { if (self::$connection === null) { throw new Dibi\Exception('Dibi is not connected to database.'); } return self::$connection; } if (!isset(self::$registry[$name])) { throw new Dibi\Exception("There is no connection named '$name'."); } return self::$registry[$name]; } /** * Sets connection. */ public static function setConnection(Dibi\Connection $connection): Dibi\Connection { return self::$connection = $connection; } /********************* monostate for active connection ****************d*g**/ /** * Monostate for Dibi\Connection. */ public static function __callStatic(string $name, array $args) { return self::getConnection()->$name(...$args); } /********************* misc tools ****************d*g**/ /** * Prints out a syntax highlighted version of the SQL command or Result. * @param string|Dibi\Result $sql * @param bool $return return output instead of printing it? */ public static function dump($sql = null, bool $return = false): ?string { return Dibi\Helpers::dump($sql, $return); } /** * Strips microseconds part. */ public static function stripMicroseconds(DateTimeInterface $dt): DateTimeInterface { $class = get_class($dt); return new $class($dt->format('Y-m-d H:i:s'), $dt->getTimezone()); } }