Ako injektnut property aby som nemusel pisat spagetti code?

Notice: This thread is very old.
steelbull
Member | 240
+
0
-

Ako inejktnut priamo property params, aby som v presenteri nemusel pisat $this->config->params ale len $this->config?

Dakujem.

class ConfigService extends \Nette\Object {

    private $params;

    private $context;

    public function __construct($params, \Nette\Database\Context $context) {

        $this->context = $context;

        $config = (new \App\Model\ConfigurationModel($this->context))->getConfiguration();

        $this->params = array_merge($params, $config);
    }

    public function __invoke() {
        return $this->params;
    }

}
steelbull
Member | 240
+
0
-

Vyriesil som to takto, ale neda sa to cez notation?

public function injectConfigService(\Services\ConfigService $service) {
    $this->configuration = $service();
}
romiix.org
Member | 343
+
+1
-

Nebolo by vhodnejšie nastaviť property priamo presenteru v config.neon?

steelbull
Member | 240
+
0
-

Urcite by to bolo krajsie aj vhodnejsie. Mohol by som Vas poprosit o nejaku ukazku, ako to property v config nastavim? Dakujem.

romiix.org
Member | 343
+
+1
-
services:
	nejakyPresenter:
		class: App\Presenters\NejakyPresenter
		setup:
			- $param(value)
David Kudera
Member | 455
+
+1
-

Nebo bez nutnosti uvádět název

services:

	-
		class: App\Presenters\NejakyPresenter
		setup:
			- $param(value)

Další možností, často mnohem lepší, jak jsem zjistil, je nepoužívat config parametry v presenteru vůbec. Všechno mám pěkně rozdělené na služby, které mají přesně dané zodpovědnosti a také jim určené parametry. No a presentery jsou krásně čisté, jen s kódy pro vytvoření komponent přes továrničky a sem tam nějaké to načtení dat podle parametrů. A navíc se to i jednoduše testuje ;-)

Patrik Votoček
Member | 2221
+
+2
-

Prosím kluci příště česky do českého fóra