Předání repozitáře do třídy

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

Zdravím, řeším teď takovou prkotinu a nevím si rady a tak než se to budu snažit vyřešit nějakou složitou oklikou, tak se zeptám zde. Mám klasickou třídu:

use Nette\Application\UI;

class xml_heureka extends UI\Control {

    /**
     * @var ProductModel
     */
    protected $product;

    public function __construct(ProductModel $product) {
        parent::__construct();
        $this->product = $product;
        $this->create_xml();
    }
...
}

A mým jediným problém je, jak si předat repozitář ProducModel. Když bych to volal z presenteru tak je to jasný, stačí mít třeba něco takového:

class SomePresenter extends \Nette\Application\UI\Presenter {
    /** @var \ProductModel */
    protected $product;

public function beforeRender() {
	$this->product = $this->context->product;
	$xml = new \xml_heureka($this->product);
	}

}

A funguje to bez problémů. Jenže já to potřebuji volat pomocí CRONu a tak si třídu xml_heureka z presenteru volat nemůžu. Navíc potřebuji aby byl zvenčí dostupný a nevím kam třídu vložit aby zároveň se zároveň předával repozitář a byl dostupný zvenčí. Lze toto nějak jednoduše vyřešit?

besanek
Člen | 128
+
0
-

Co ti brání si vytvořit třídu xml_heureka také jako službu? Pak se ti tam ProductModel nadrátuje sám.

Draffix
Člen | 146
+
0
-

besanek napsal(a):

Co ti brání si vytvořit třídu xml_heureka také jako službu? Pak se ti tam ProductModel nadrátuje sám.

To mě nenapadlo, a kam mám tu třídu vložit aby byla viditelná zvenčí a zároveň ji používat jako službu?

Editoval Draffix (1. 9. 2013 19:30)

HFechs
Člen | 5
+
0
-

Ahoj, jestli potřebuješ CRON, tak využij CLI presenteru – https://pla.nette.org/…tovani-v-cli.

besanek
Člen | 128
+
0
-

Mě se osvědčilo na CRON používat obyčejné procedurální skripty, okořeněné kontejnerem.

Příklad.

$container = require __DIR__ . '/../app/bootstrap.php';

$heureka = $container->getByType('xml_heureka');

Je to takové quick 'n dirty, ale pohodlné.