Služba – Autowiring a parametr
- Fires
- Člen | 97
Zdravim, nejak jsem se zaseknul na blbosti. Vytvářím modelUser:
userModel.php
namespace globesphere\model;
class UserModel {
/** @var \Nette\Database\Connection Database connection */
private $database;
private $user_table;
private $id;
private $login;
private $email;
private $password;
private $password_salt;
private $reg_time;
function __construct(\Nette\Database\Connection $database, $user_table) {
$this->database = $database;
$this->user_table = $user_table;
}
function getById($id){
$this->database->quote("SELECT * FROM ? WHERE id=?");
}
function getId() {
return $this->id;
}
function getLogin() {
return $this->login;
}
.
.
.
Tomuto modelu chci přadat databazi ( pomoci AW přes konstruktor ) a nazev tabulky z konfigu.
config_user.neon
parameters:
user_table_name: %prefix%user
services:
userModel:
class: globesphere\model\UserModel
user_table: %user_table_name%
Zkoušel jsem různé konfigurace, různé přístupy ale vždy skončím na tom že AW očekává DB nebo neparsuje parametr.. Pročetl jsem komplet help kolem konfigurace a quick start bohužel jsem nenašel žádný důkladný návod popisující propojení configu a modelu, služeb a AW.
Můžete mě někam odkázat nebo nakopnout správným směrem ? Díky.
- Jan Mikeš
- Člen | 771
Ahoj, zápis který hledáš je tento:
services:
- globesphere\model\UserModel(..., %user_table_name%)
## Případně toto, pokud nutně potřebuješ službu pojmenovat
userModel: globesphere\model\UserModel(..., %user_table_name%)
Lepší je uvádět parametry předáváné ručně v konstruktoru jako první, to ti umožní následující jednodušší zápis:
function __construct($user_table, Connection $database) {
$this->database = $database;
$this->user_table = $user_table;
}
services:
- globesphere\model\UserModel(%user_table_name%)
## nebo
userModel: globesphere\model\UserModel(%user_table_name%)
Rád bych se zeptal co plánuješ s properties v modelu
$id, $login, $email
atd.., to jsou properties jednotlivých
řádků v tabulce? Zavání to totiž špatným návrhem. To co možná
hledáš jsou entity v doctrine.
Editoval Jan Mikeš (29. 12. 2016 12:47)
- Fires
- Člen | 97
Zeptám se ještě zda je můj přistup tedy správny
chci vytvořit 2 třidy – userEntity a userModel
userEntity – bude představovat záznam z db vč. metod save, edit
etc.
userModel – bude získávat konkretní instance userEntity
Je to už pár let co jsem v nette dělal a koukám ze vše se hodně změnilo a bestpractice už je někde úplně jinde :(
Editoval Fires (29. 12. 2016 15:17)