Будь проклят тот день, когда я решил ввести неймспейсы...

This commit is contained in:
lopar
2020-10-28 22:21:08 +02:00
parent f1b9ce6a45
commit d38d62c5b5
159 changed files with 339 additions and 304 deletions
+11
View File
@@ -0,0 +1,11 @@
<?php
/**
* @author Vasiliy Makogon, makogon-vs@yandex.ru
* @link https://github.com/Vasiliy-Makogon/Database/
*/
namespace Krugozor\Database\Mysql;
class Exception extends \Exception
{
}
File diff suppressed because it is too large Load Diff
+167
View File
@@ -0,0 +1,167 @@
<?php
/**
* @author Vasiliy Makogon, makogon-vs@yandex.ru
* @link https://github.com/Vasiliy-Makogon/Database/
*
* Обёртка над объектом mysqli_result.
*/
namespace Krugozor\Database\Mysql;
class Statement
{
/**
* Рузультат SQL-операции в виде объекта mysqli_result.
*
* @var mysqli_result
*/
private $mysqli_result = null;
/**
* @param mysqli_result
*/
public function __construct(\mysqli_result $mysqli_result)
{
$this->mysqli_result = $mysqli_result;
}
/**
* Извлекает результирующий ряд в виде ассоциативного массива.
*
* @see mysqli_fetch_assoc
* @param void
* @return array
*/
public function fetch_assoc()
{
return mysqli_fetch_assoc($this->mysqli_result);
}
/**
* Извлекает результирующий ряд в виде массива.
*
* @see mysqli_fetch_row
* @param void
* @return array
*/
public function fetch_row()
{
return mysqli_fetch_row($this->mysqli_result);
}
/**
* Извлекает результирующий ряд в виде объекта.
*
* @see mysqli_fetch_object
* @param void
* @return stdClass
*/
public function fetch_object()
{
return mysqli_fetch_object($this->mysqli_result);
}
/**
* Возвращает результат в виде массива ассоциативных массивов.
*
* @param void
* @return array
*/
public function fetch_assoc_array()
{
$array = array();
while ($row = mysqli_fetch_assoc($this->mysqli_result)) {
$array[] = $row;
}
return $array;
}
/**
* Возвращает результат в виде массива массивов.
*
* @param void
* @return array
*/
public function fetch_row_array()
{
$array = array();
while ($row = mysqli_fetch_row($this->mysqli_result)) {
$array[] = $row;
}
return $array;
}
/**
* Возвращает результат в виде массива объектов.
*
* @param void
* @return array
*/
public function fetch_object_array()
{
$array = array();
while ($row = mysqli_fetch_object($this->mysqli_result)) {
$array[] = $row;
}
return $array;
}
/**
* Возвращает значение первого поля результирующей таблицы.
*
* @param void
* @return string
*/
public function getOne()
{
$row = mysqli_fetch_row($this->mysqli_result);
return $row[0];
}
/**
* Возвращает количество рядов в результате.
* Эта команда верна только для операторов SELECT.
*
* @see mysqli_num_rows
* @param void
* @return int
*/
public function getNumRows()
{
return mysqli_num_rows($this->mysqli_result);
}
/**
* Возвращает объект результата mysqli_result.
*
* @param void
* @return mysqli_result
*/
public function getResult()
{
return $this->mysqli_result;
}
/**
* Освобождает память занятую результатами запроса.
*
* @param void
* @return void
*/
public function free()
{
$this->mysqli_result->free();
}
public function __destruct()
{
$this->free();
}
}
+436
View File
@@ -0,0 +1,436 @@
-- phpMyAdmin SQL Dump
-- version 5.0.1
-- https://www.phpmyadmin.net/
--
-- Хост: localhost
-- Время создания: Окт 21 2020 г., 17:33
-- Версия сервера: 10.3.17-MariaDB
-- Версия PHP: 7.2.24
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `battles`
--
-- --------------------------------------------------------
--
-- Структура таблицы `bank`
--
CREATE TABLE `bank` (
`user_id` smallint(6) NOT NULL,
`money` smallint(5) UNSIGNED DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `bank`
--
INSERT INTO `bank` (`user_id`, `money`) VALUES
(2, 0);
-- --------------------------------------------------------
--
-- Структура таблицы `bank_logs`
--
CREATE TABLE `bank_logs` (
`id` int(11) NOT NULL,
`sender_id` smallint(6) DEFAULT NULL,
`receiver_id` smallint(6) DEFAULT NULL,
`amount` int(11) NOT NULL,
`type` varchar(16) NOT NULL,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `chat`
--
CREATE TABLE `chat` (
`id` int(10) UNSIGNED NOT NULL,
`user_id` smallint(6) NOT NULL,
`receiver_id` smallint(6) DEFAULT NULL,
`msg` text NOT NULL,
`msgdate` timestamp NULL DEFAULT current_timestamp(),
`type` varchar(10) NOT NULL DEFAULT 'msg'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Chat messages';
--
-- Дамп данных таблицы `chat`
--
INSERT INTO `chat` (`id`, `user_id`, `receiver_id`, `msg`, `msgdate`, `type`) VALUES
(1, 2, NULL, 'dfdf', '2020-06-23 13:41:58', 'msg'),
(2, 2, NULL, 'А вот и чёртов чат. :)', '2020-06-23 13:42:15', 'msg'),
(3, 2, NULL, 'Почему этот кусок дебила работает в строчку?', '2020-06-23 13:42:38', 'msg'),
(4, 2, NULL, 'Переполнение!', '2020-07-21 07:15:57', 'msg'),
(5, 2, NULL, 'Надо переполнение!', '2020-07-21 07:16:03', 'msg'),
(6, 2, NULL, 'Точно надо переполнение!', '2020-07-21 07:16:10', 'msg'),
(7, 2, NULL, 'Ещё раз, переполенение.', '2020-07-21 07:16:19', 'msg'),
(8, 2, NULL, 'Текст-текстик!', '2020-07-21 07:16:25', 'msg'),
(9, 2, NULL, 'Ещё немного!', '2020-07-21 07:16:29', 'msg'),
(10, 2, NULL, 'Бдыщ!', '2020-07-21 07:16:35', 'msg'),
(11, 2, NULL, 'Серьёзно?', '2020-07-21 07:16:41', 'msg'),
(12, 2, NULL, 'Внезапно...', '2020-07-21 07:16:49', 'msg'),
(13, 2, NULL, 'Да вы издеваетесь...', '2020-07-21 07:17:00', 'msg'),
(14, 2, NULL, 'Скотыняка. :(', '2020-07-21 07:17:15', 'msg');
-- --------------------------------------------------------
--
-- Структура таблицы `inventory`
--
CREATE TABLE `inventory` (
`item_id` int(11) NOT NULL,
`owner_id` smallint(6) NOT NULL,
`name` varchar(255) NOT NULL DEFAULT 'Неизвестный предмет',
`item_type` smallint(6) NOT NULL DEFAULT 0,
`durability` smallint(6) NOT NULL,
`price` int(11) NOT NULL DEFAULT 0,
`need_strength` tinyint(4) NOT NULL DEFAULT 0,
`need_dexterity` tinyint(4) NOT NULL DEFAULT 0,
`need_intuition` tinyint(4) NOT NULL DEFAULT 0,
`need_endurance` tinyint(4) NOT NULL DEFAULT 0,
`need_intelligence` tinyint(4) NOT NULL DEFAULT 0,
`need_wisdom` tinyint(4) NOT NULL DEFAULT 0,
`add_strength` tinyint(4) NOT NULL DEFAULT 0,
`add_dexterity` tinyint(4) NOT NULL DEFAULT 0,
`add_intuition` tinyint(4) NOT NULL DEFAULT 0,
`add_endurance` tinyint(4) NOT NULL DEFAULT 0,
`add_intelligence` tinyint(4) NOT NULL DEFAULT 0,
`add_wisdom` tinyint(4) NOT NULL DEFAULT 0,
`add_accuracy` smallint(6) DEFAULT 0,
`add_evasion` smallint(6) DEFAULT 0,
`add_criticals` smallint(6) DEFAULT 0,
`add_min_physical_damage` smallint(5) UNSIGNED DEFAULT 0,
`add_max_physical_damage` smallint(5) UNSIGNED DEFAULT 0,
`dressed_slot` tinyint(4) NOT NULL DEFAULT 0,
`image` varchar(64) NOT NULL DEFAULT 'noitem.png',
`weight` smallint(5) UNSIGNED DEFAULT 1,
`on_sale` tinyint(4) DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Инвентарь персонажей';
--
-- Дамп данных таблицы `inventory`
--
INSERT INTO `inventory` (`item_id`, `owner_id`, `name`, `item_type`, `durability`, `price`, `need_strength`, `need_dexterity`, `need_intuition`, `need_endurance`, `need_intelligence`, `need_wisdom`, `add_strength`, `add_dexterity`, `add_intuition`, `add_endurance`, `add_intelligence`, `add_wisdom`, `add_accuracy`, `add_evasion`, `add_criticals`, `add_min_physical_damage`, `add_max_physical_damage`, `dressed_slot`, `image`, `weight`, `on_sale`) VALUES
(1, 2, 'Кольчужка', 2, 10, 55, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'armor.png', 6, 0),
(2, 2, 'Нож', 6, 5, 12, 4, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 'katana.png', 1, 0),
(3, 2, 'Ещё кольчужка', 2, 10, 50, 8, 2, 2, 8, 0, 0, -1, -1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'armor.png', 5, 0),
(4, 2, 'Колечко', 9, 4, 150, 15, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 20, 10, 0, 0, 0, 'ring1.png', 1, 0),
(5, 2, 'Перстенёк', 9, 6, 180, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 'ring2.png', 1, 0),
(6, 2, 'Перстенёк', 9, 6, 180, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 'ring2.png', 1, 0),
(7, 2, 'Кольцо общей слабости', 9, 100, 5311, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, -5, -5, -20, -20, -20, 0, 0, 0, 'ring1.png', 1, 0),
(8, 2, 'Кольцо общей слабости', 9, 100, 5311, 0, 0, 0, 0, 0, 0, -7, -7, -7, -7, -5, -5, -20, -20, -20, 0, 0, 0, 'ring1.png', 1, 0);
-- --------------------------------------------------------
--
-- Структура таблицы `online`
--
CREATE TABLE `online` (
`user_id` smallint(6) NOT NULL DEFAULT 0,
`date` int(12) UNSIGNED DEFAULT 0,
`real_time` int(11) NOT NULL,
`room` smallint(5) UNSIGNED DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `online`
--
INSERT INTO `online` (`user_id`, `date`, `real_time`, `room`) VALUES
(2, 1601412403, 1601651536, 1);
-- --------------------------------------------------------
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
`id` smallint(6) NOT NULL,
`login` varchar(64) NOT NULL,
`email` varchar(64) DEFAULT 'no_mail_set',
`pass` varchar(255) DEFAULT NULL,
`realname` varchar(64) DEFAULT NULL,
`borndate` varchar(24) DEFAULT '',
`info` longtext DEFAULT NULL,
`level` tinyint(4) NOT NULL DEFAULT 1,
`align` tinyint(4) DEFAULT 0,
`clan` varchar(16) DEFAULT '',
`money` int(11) DEFAULT 0,
`strength` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`dexterity` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`intuition` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`endurance` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`intelligence` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`wisdom` tinyint(3) UNSIGNED NOT NULL DEFAULT 10,
`free_stat_points` tinyint(3) UNSIGNED DEFAULT 0,
`health` int(11) NOT NULL,
`mana` int(11) NOT NULL,
`ip` varchar(16) DEFAULT NULL,
`session_id` varchar(128) DEFAULT NULL,
`admin` tinyint(4) DEFAULT 0,
`enter_game` tinyint(1) NOT NULL DEFAULT 0,
`room` smallint(5) UNSIGNED NOT NULL DEFAULT 1,
`block` tinyint(4) NOT NULL DEFAULT 0,
`shadow` varchar(64) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `users`
--
INSERT INTO `users` (`id`, `login`, `email`, `pass`, `realname`, `borndate`, `info`, `level`, `align`, `clan`, `money`, `strength`, `dexterity`, `intuition`, `endurance`, `intelligence`, `wisdom`, `free_stat_points`, `health`, `mana`, `ip`, `session_id`, `admin`, `enter_game`, `room`, `block`, `shadow`) VALUES
(2, 'Father', 'father@battles.lan', '$2y$10$avSnIjtR/v1i5hJJ3dXH/e638WDbXFUtDmrSkUuyhmwsgmk7f35hq', 'Отец', '1986-10-20', 'И немного о себе..', 1, 6, '7', 0, 10, 10, 10, 10, 10, 10, 0, 17, 4, '192.168.20.15', 'lnuefs4n3air4jbpd76npq7hsl', 1, 0, 30, 0, 'father.png');
-- --------------------------------------------------------
--
-- Структура таблицы `users_effects`
--
CREATE TABLE `users_effects` (
`effect_id` int(11) NOT NULL,
`owner_id` smallint(6) NOT NULL,
`type` smallint(6) NOT NULL DEFAULT 0,
`name` varchar(64) NOT NULL DEFAULT 'Неизвестный эффект',
`remaining_time` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `users_logs`
--
CREATE TABLE `users_logs` (
`id` int(11) NOT NULL,
`user_id` smallint(6) NOT NULL,
`author_id` smallint(6) NOT NULL DEFAULT 0,
`type` varchar(24) NOT NULL DEFAULT 'system',
`date` datetime DEFAULT current_timestamp(),
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Дамп данных таблицы `users_logs`
--
INSERT INTO `users_logs` (`id`, `user_id`, `author_id`, `type`, `date`, `text`) VALUES
(1, 2, 0, 'system', '2020-07-05 23:03:52', 'Проверочная запись.');
-- --------------------------------------------------------
--
-- Структура таблицы `users_presents`
--
CREATE TABLE `users_presents` (
`id` int(11) NOT NULL,
`owner_id` smallint(6) NOT NULL,
`sender_id` smallint(6) NOT NULL,
`image` varchar(64) NOT NULL DEFAULT 'null.png'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------
--
-- Структура таблицы `users_recovery`
--
CREATE TABLE `users_recovery` (
`login` varchar(64) NOT NULL,
`hash` varchar(64) NOT NULL,
`ip` varchar(16) NOT NULL,
`date` varchar(64) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `bank`
--
ALTER TABLE `bank`
ADD UNIQUE KEY `bank_id_uindex` (`user_id`);
--
-- Индексы таблицы `bank_logs`
--
ALTER TABLE `bank_logs`
ADD PRIMARY KEY (`id`);
--
-- Индексы таблицы `chat`
--
ALTER TABLE `chat`
ADD PRIMARY KEY (`id`),
ADD KEY `chat_users_id_fk` (`user_id`);
--
-- Индексы таблицы `inventory`
--
ALTER TABLE `inventory`
ADD PRIMARY KEY (`item_id`),
ADD KEY `inventory_users_id_fk` (`owner_id`);
--
-- Индексы таблицы `online`
--
ALTER TABLE `online`
ADD UNIQUE KEY `online_user_id_uindex` (`user_id`);
--
-- Индексы таблицы `users`
--
ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `users_login_uindex` (`login`),
ADD UNIQUE KEY `users_email_uindex` (`email`);
--
-- Индексы таблицы `users_effects`
--
ALTER TABLE `users_effects`
ADD PRIMARY KEY (`effect_id`),
ADD KEY `users_effects_users_id_fk` (`owner_id`);
--
-- Индексы таблицы `users_logs`
--
ALTER TABLE `users_logs`
ADD PRIMARY KEY (`id`),
ADD KEY `users_logs_users_id_fk` (`user_id`);
--
-- Индексы таблицы `users_presents`
--
ALTER TABLE `users_presents`
ADD PRIMARY KEY (`id`),
ADD KEY `users_presents_users_id_fk` (`owner_id`);
--
-- Индексы таблицы `users_recovery`
--
ALTER TABLE `users_recovery`
ADD PRIMARY KEY (`login`),
ADD UNIQUE KEY `users_recovery_login_uindex` (`login`),
ADD UNIQUE KEY `users_recovery_hash_uindex` (`hash`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `bank_logs`
--
ALTER TABLE `bank_logs`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `chat`
--
ALTER TABLE `chat`
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=15;
--
-- AUTO_INCREMENT для таблицы `inventory`
--
ALTER TABLE `inventory`
MODIFY `item_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
--
-- AUTO_INCREMENT для таблицы `users`
--
ALTER TABLE `users`
MODIFY `id` smallint(6) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
--
-- AUTO_INCREMENT для таблицы `users_effects`
--
ALTER TABLE `users_effects`
MODIFY `effect_id` int(11) NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT для таблицы `users_logs`
--
ALTER TABLE `users_logs`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
--
-- AUTO_INCREMENT для таблицы `users_presents`
--
ALTER TABLE `users_presents`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
--
-- Ограничения внешнего ключа сохраненных таблиц
--
--
-- Ограничения внешнего ключа таблицы `bank`
--
ALTER TABLE `bank`
ADD CONSTRAINT `bank_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `chat`
--
ALTER TABLE `chat`
ADD CONSTRAINT `chat_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `inventory`
--
ALTER TABLE `inventory`
ADD CONSTRAINT `inventory_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `online`
--
ALTER TABLE `online`
ADD CONSTRAINT `online_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `users_effects`
--
ALTER TABLE `users_effects`
ADD CONSTRAINT `users_effects_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `users_logs`
--
ALTER TABLE `users_logs`
ADD CONSTRAINT `users_logs_users_id_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
--
-- Ограничения внешнего ключа таблицы `users_presents`
--
ALTER TABLE `users_presents`
ADD CONSTRAINT `users_presents_users_id_fk` FOREIGN KEY (`owner_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+31
View File
@@ -0,0 +1,31 @@
<?php
/**
* Created by PhpStorm.
* User: lopiu
* Date: 28.01.2018
* Time: 16:35
*/
class db
{
private static $_instance = null;
private function __clone() {}
private function __construct() {}
/**
* @return \Krugozor\Database\Mysql\Mysql
*/
public static function c()
{
if (!self::$_instance)
{
self::$_instance = Krugozor\Database\Mysql\Mysql::create("192.168.20.5", "battles", "bottle-neck-horse", 32101)
// Выбор базы данных
->setDatabaseName("battles")
// Выбор кодировки
->setCharset("utf8");
}
return self::$_instance;
}
}