statické DIBI na DI ModelLoader
- sepo
- Člen | 69
Ahoj
Pokúšam sa prerobiť statické volanie DIBI cez DI ModelLoader.
DI ModelLoader mám implementovaný https://pla.nette.org/…cy-injection (Majkl578)
mám model AccessModel.php (z GUI for Acl upravený pre
Nette2)
<?php
namespace Models;
class AccessModel extends Base {
/** @var array */
private $access = array();
public function __construct($roles) {
$resources = \dibi::fetchAll('SELECT key_name, name FROM ['.TABLE_RESOURCES.'] ORDER BY name;');
.......
ak chcem nahradiť \dibi::fetchAll .. za
$this->database->fetchAll …
dostanem Trying to get property of non-object
predpokladám že konštruktoru potrebujem niečo dodať.
Skočil som rovnými nohami do OOP a DI tak mi to nie je celkom jasné.
- sepo
- Člen | 69
stačí predať container
a funguje to
<?php
namespace Models;
class AccessModel extends Base {
/** @var array */
private $access = array();
public function __construct($container, $roles) {
parent::__construct($container);
$resources = $this->database->fetchAll('SELECT key_name, name FROM ['.TABLE_RESOURCES.'] ORDER BY name;');
.......
- sepo
- Člen | 69
Ot@s napsal(a):
V modelech můžeš rovnou použít:
$this->getDatabase()->fetchAll('SELECT ....');
no to mi bez predania containera nefunguje
Cannot read an undeclared property Models\AccessModel::…
proste tam musím mať
public function __construct($container, $roles) {
parent::__construct($container);
- Filip Procházka
- Moderator | 4668
@22: Na jeho obranu je potřeba poznamenat, že někteří lidé by fakt neměli překrývat konstruktory :)) Ale otázka zůstává @Felix, proč by neměl? :)