PHP/MySQL | Создание экземпляра модели в конструкторе до испол
DELETED
Автор
6 октября 2019, в 12:40
Delete
Как Вы создаёте экземпляр модели?
Сразу в конструкторе и он всегда создан, даже если не активен экшен, где нужны методы модели?
Или именно при активации экшена, то есть экземпляр создаётся по месту использования?
Меня смущает то, что в коде тупо будет много раз прописано создание объекта (хотя это не смертельно), а если создавать в конструкторе, то смущает: не будет ли выделяться лишняя память для хранения созданного в нём экземпляра, который может быть не нужен на данный момент.
use App\Models\User;
class UserController
{
public function profileAction($id)
{
$user = User::getById($id);
// ...
}
}
class UserController
{
public function profileAction($id)
{
$user = User::getById($id);
// ...
}
}
Но для получения записей надо использовать репозитории.
Function (04.11.2019 в 06:49)
Но для получения записей надо использовать репозитории.
Но для получения записей надо использовать репозитории.
где такое "надо" написано?
Щас бы из за пары килобайт памяти переживать
Вероломство , тоже думал об этом и по стандарту объявляю модель в конструкторе контроллера
памяти будет жрать достаточно, поэтому лучше создать при вызове. Но я бы не использовал интерфейсы, достаточно подгрузки трейтов или еще хардкорней инклюд из функции создания нужного файла
________
посл. ред. 04.11.2019 в 10:27; всего 1 раз(а); by Сибирский
________
посл. ред. 04.11.2019 в 10:27; всего 1 раз(а); by Сибирский
DELETED
Автор
4 ноября 2019, в 20:08
Delete
SparkuS (04.11.2019 в 08:26)
Вероломство , тоже думал об этом и по стандарту объявляю модель в конструкторе контроллера
Вероломство , тоже думал об этом и по стандарту объявляю модель в конструкторе контроллера
где такой стандарт?
DELETED
Автор
4 ноября 2019, в 20:09
Delete
Сибирский (04.11.2019 в 10:26) памяти будет жрать достаточно, поэтому лучше создать при вызове. Но я бы не использовал интерфейсы, достаточно подгрузки трейтов или еще хардкорней инклюд из функции создания нужного файла
зачем тут экземпляр создавать, если запрос ещё не отправлен, я вот так делаю: сохдаю объект после POST запроса php
namespace app\controllers; use app\models\Main; class MainController extends AppController { public function indexAction() { if (filter_has_var(0, 'go')) { $login = filter_input(0, 'login'); $password = filter_input(0, 'password'); $mObj = new Main(); if ($mObj->loginHandler($login, $password) === true) { $this->alertRedirect('success', $mObj->alert, '/menu'); } $this->alertRedirect('danger', $mObj->alert); } $this->setSite('Военная экономическая стратегия'); $site = $this->site; $this->set(compact('site')); } public function signupAction() { if (filter_has_var(0, 'go')) { $login = preg_replace('/\s+/', ' ', trim(filter_input(0, 'login'))); $password = filter_input(0, 'password'); $email = filter_input(0, 'email', 517); $mObj = new Main(); if ($mObj->signupHandler($login, $password, $email) === true) { $this->sendMail($email, 'Логин: ' . $login . "\n" . 'Пароль: ' . $password); $this->alertRedirect('success', $mObj->alert, '/training'); } $this->alertRedirect('danger', $mObj->alert); } $this->setSite('Регистрация'); $site = $this->site; $this->set(compact('site')); } public function forgotAction() { if (filter_has_var(0, 'go')) { $password = $this->generateRandomString(10); $email = filter_input(0, 'email', 517); $mObj = new Main(); if ($mObj->forgotHandler($password, $email) === true) { $this->sendMail($email, 'Новой пароль: ' . $password); $this->alertRedirect('success', $mObj->alert, '/'); } $this->alertRedirect('danger', $mObj->alert); } $this->setSite('Восстановление пароля'); $site = $this->site; $this->set(compact('site')); } }
Вероломство , а ты и не создавай :) Тяни из статического класса :)