Továrničky – předávání parametrů přes create()

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

Zdravím, snažím se rozběhat vytváření entit přes továrničky. Rád bych do nově vytvářené instance předával rovnou nějaké parametry. Příklad:

<?php
interface IUserFactory
{
    /** @return User */
    function create($name);
}
?>
<?php
class User {
	public $name;
	public function __construct($name) { $this->name = $name; }
}
?>
factories:
	user: IUserFactory

A vytváření pak:

<?php
$user = $this->userFactory->create('Karel');
?>

Vše funguje dobře, dokud se nesnažím implementovat to předání parametru. Jak upravit configuraci, aby to sežralo i ten parametr? Díky!

Pavel Macháň
Člen | 282
+
0
-

MikeLacroix napsal(a):

Zdravím, snažím se rozběhat vytváření entit přes továrničky. Rád bych do nově vytvářené instance předával rovnou nějaké parametry. Příklad:

<?php
interface IUserFactory
{
    /** @return User */
    function create($name);
}
?>
<?php
class User {
	public $name;
	public function __construct($name) { $this->name = $name; }
}
?>
factories:
	user: IUserFactory

A vytváření pak:

<?php
$user = $this->userFactory->create('Karel');
?>

Vše funguje dobře, dokud se nesnažím implementovat to předání parametru. Jak upravit configuraci, aby to sežralo i ten parametr? Díky!

class UserFactory implements IUserFactory {

 	public function create($name) {
		return new User($name);
	}
}
David Matějka
Moderator | 6445
+
0
-
factories:
	user:
		implement: IUserFactory
		class: User
		parameters: [name]
		arguments: [%name%]
MikeLacroix
Člen | 60
+
0
-

Super, díky matej21!