16
interface
PersisterInterface {
/* ... */
}
interface
MailerInterface {
/* ... */
}
class RegistrationManager {
private $persister;
private $mailer;
public function __construct(
PersisterInterface $persister,
MailerInterface $mailer
) {
$this->persister = $persister;
$this->mailer = $mailer;
}
public function register() {/* ... */}
}
Slide 17
Slide 17 text
17
C’est
l’injection de
dépendances
Slide 18
Slide 18 text
18
Encapsuler des
objets dans d’autres
pour créer des
comportements
complexes
Slide 19
Slide 19 text
19
Faciliter le
changement par
l’utilisation de
contrats
Slide 20
Slide 20 text
20
Mais créer un objet
devient plus
compliqué
Slide 21
Slide 21 text
21
$manager = new RegistrationManager(
new Persister(
new Doctrine(/* ... */)
),
new Mailer(
new Twig(/* ... */),
new SwiftMailer(/* ... */)
)
);
Slide 22
Slide 22 text
22
Symfony
DependencyInjection
Slide 23
Slide 23 text
23
Objectif :
permettre la création
aisé d’instances de
classes
Slide 24
Slide 24 text
24
Configurer ce graphe
de dépendances
entre classes
Slide 25
Slide 25 text
25
interface
PersisterInterface {
/* ... */
}
interface
MailerInterface {
/* ... */
}
class RegistrationManager {
private $persister;
private $mailer;
public function __construct(
PersisterInterface $persister,
MailerInterface $mailer
) {
$this->persister = $persister;
$this->mailer = $mailer;
}
public function register() {/* ... */}
}
Slide 26
Slide 26 text
26
$manager = new RegistrationManager(
new Persister(
new Doctrine(/* ... */)
),
new Mailer(
new Twig(/* ... */),
new SwiftMailer(/* ... */)
)
);
Objectif
Slide 27
Slide 27 text
27
Fonctionnement
général
1
Configuration
2
Compilation
3
Utilisation
33
services:
_defaults:
autowire: true
App\:
resource: '../src/*' Autodiscovery :
importe toutes les classes
dans src/ en tant que noeuds
du graphe
Slide 34
Slide 34 text
34
services:
_defaults:
autowire: true
App\:
resource: '../src/*' Autodiscovery :
importe toutes les classes
dans src/ en tant que noeuds
du graphe
Autowiring :
créé les liens entre les noeuds
du graphe automatiquement