statické DIBI na DI ModelLoader

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
sepo
Člen | 69
+
0
-

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
+
0
-

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;');
                .......
Ot@s
Backer | 476
+
0
-

V modelech můžeš rovnou použít:

	$this->getDatabase()->fetchAll('SELECT ....');

Editoval Ot@s (9. 11. 2011 14:11)

sepo
Člen | 69
+
0
-

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);
Felix
Nette Core | 1245
+
0
-

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);

ty bys hlavne nemel prepisovat constructory

22
Člen | 1478
+
0
-

@Felix: a to proč? :-)

Filip Procházka
Moderator | 4668
+
0
-

@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? :)