Решил разгрузить БД от лишних записей: на данный момент данные базовой таблицы тупо переносятся в таблицу пользователя, поэтому хочу в таблице пользователя хранить ТОЛЬКО пару - айдишник пользуна, айдишник базовой таблицы ну и количество там у меня ещё есть. Спойлер: Базовая таблица PHP: <?php namespace app\models\admin; use core\base\Model; use core\Data; class Unit extends Model { public $user_lvl; public $name; public $type; public $kind; public $attack; public $defense; public $maintenance; public $price; public static function getFromOne($unit_id) { $unit = Data::get('admin.unit'); // проверили наличие одного в "памяти" if (!$unit) { $unit = self::findOne($unit_id); // выбираем один по айдишнику Data::set('admin.unit', $unit); // сохраняем один в "память" } return $unit; // вернули один из одного } public static function getFromAll($unit_id) { $unit = Data::get('admin.unit'); // проверили наличие всех в "памяти" if (!$unit) { $unit = self::findAll(); // выбираем все Data::set('admin.unit', $unit); // сохраняем все в "память" } return array_column($unit, null, 'id')[$unit_id]; // вернули один из всех } } Спойлер: Таблица пользуна PHP: <?php namespace app\models\user; use app\models\admin\Unit; use core\base\Model; class UserUnit extends Model { // родные public $id_user; public $id_unit; public $amount; // базовые private $user_lvl; private $name; private $type; private $kind; private $attack; private $defense; private $maintenance; private $price; public function getUserLvl() { return Unit::getFromOne($this->id_unit)->user_lvl; } public function getName() { return Unit::getFromOne($this->id_unit)->name; } public function getType() { return Unit::getFromOne($this->id_unit)->type; } public function getKind() { return Unit::getFromOne($this->id_unit)->kind; } public function getAttack() { return Unit::getFromOne($this->id_unit)->attack; } public function getDefense() { return Unit::getFromOne($this->id_unit)->defense; } public function getMaintenance() { return Unit::getFromOne($this->id_unit)->maintenance; } public function getPrice() { return Unit::getFromOne($this->id_unit)->price; } } Вопрос такой: Какой метод: getFromOne() или getFromAll() мне следует оставить, ЕСЛИ мне, например, нужно будет всё, что принадлежит пользователю, крутануть в цикле с использованием геттеров? Хранить в "admin.unit" СРАЗУ весь массив объектов, выбирая по айдишнику нужный объект или выбирать строго по айдишнику только один, НО перезаписывая на каждой итерации "admin.unit"? И вообще будет ли работать без косяков выборка по одному с перезаписью в ЦИКЛЕ? Прокомментируйте, пожалуйста p.s. в findAll будет массив из 118-ти объектов
всё на локалке если помнишь, то раньше была игра Генералы (generals.mobi), вот такую пилю. я её уже делал на процедурке ЕМНИП лет 7 назад, но там жесть ГК, называется Войнушка, в пабле есть, хочу в ООП перепилить
https://ngrok.com/ в помощь. Еа бесплатном тарифе там при каждом поднятии сервиса рандомный урл наружний будет, потому надо согласовывать время поднятия сервиса с посетителями и сообщать им урл. А так хоть телеграм-бота локально поднимать можно, вот моё поделие https://github.com/donbidon/tunneled-webhooks (если ngrok обновляли, хз, работает ли, со времён последних коммитов не тестировал).