Skip to content

Commit b78f27c

Browse files
committed
1 parent bc56f9e commit b78f27c

File tree

3 files changed

+147
-0
lines changed

3 files changed

+147
-0
lines changed

cs/docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ Pět kapitol příručky vás seznámí se všemy aspekty Lean Mapperu a pomohou
1111
5. [Filtry](filtry/)
1212
6. [Mapper](mapper/)
1313
7. [EntityFactory](entity-factory/)
14+
8. [Integrace LeanMapperu do aplikace](integrace-do-aplikace/)
1415

1516
[Entity »](entity/) |

cs/docs/integrace-do-aplikace.md

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
---
2+
title: Integrace Lean Mapperu do aplikace
3+
---
4+
5+
* [Úvod](#page-title)
6+
* [Vytvoření připojení](#toc-pripojeni)
7+
* [Mapper](#toc-mapper)
8+
* [EntityFactory](#toc-entityfactory)
9+
* [Repositáře](#toc-repositare)
10+
* [Integrace do Nette](#toc-nette)
11+
* [DI rozšíření](#toc-nette-extension)
12+
* [Ruční definice](#toc-nette-config)
13+
* [Předání repositáře do presenteru](#toc-nette-presenter)
14+
15+
16+
## Vytvoření připojení {#toc-pripojeni}
17+
18+
Vytvoříme si objekt `LeanMapper\Connection` a předáme mu parametry potřebné pro připojení k databázi.
19+
20+
``` php?start_inline=1
21+
$connection = new LeanMapper\Connection(array(
22+
'driver' => 'mysqli',
23+
'host' => 'localhost',
24+
'username' => 'root',
25+
'password' => '***',
26+
'database' => 'mydatabase',
27+
));
28+
```
29+
30+
**Tip:** `LeanMapper\Connection` přebírá stejné parametry jako třída [`DibiConnection`](https://api.dibiphp.com/3.0/Dibi.Connection.html).
31+
32+
33+
## Mapper {#toc-mapper}
34+
35+
Dále potřebujeme objekt implementující [`LeanMapper\IMapper`](/cs/docs/mapper/). Lean Mapper nám poskytuje výchozí implementaci formou třídy `LeanMapper\DefaultMapper`.
36+
37+
``` php?start_inline=1
38+
$mapper = new LeanMapper\DefaultMapper;
39+
```
40+
41+
42+
## Entity factory {#toc-entityfactory}
43+
44+
A jako poslední věc vytvoříme objekt, který implementuje rozhraní [`LeanMapper\IEntityFactory`](/cs/docs/entity-factory). Lean Mapper nám opět podává pomocnou ruku prostřednictvím třídy `LeanMapper\DefaultEntityFactory`.
45+
46+
``` php?start_inline=1
47+
$entityFactory = new LeanMapper\DefaultEntityFactory;
48+
```
49+
50+
51+
## Repositáře {#toc-repositare}
52+
53+
Abychom mohli pracovat s [entitami](/cs/docs/entity/), potřebujeme k tomu [repositáře](/cs/docs/repositare/). Předpokládejme, že máme repositář napsaný, nyní ho jen vytvoříme a předáme mu potřebné závislosti.
54+
55+
``` php?start_inline=1
56+
$bookRepository = new Model\BookRepository($connection, $mapper, $entityFactory);
57+
```
58+
59+
A to je vše.
60+
61+
62+
## Integrace do Nette aplikace {#toc-nette}
63+
64+
Ještě si ukážeme, jak použít Lean Mapper v rámci aplikace napsané v [Nette](https://nette.org).
65+
66+
### DI rozšíření {#toc-nette-extension}
67+
68+
Doporučenou cestou je použití DI rozšíření. Do konfiguračního souboru aplikace (`config.neon`) si přidáme následující definici:
69+
70+
``` yaml
71+
extensions:
72+
leanmapper: LeanMapper\Bridges\Nette\DI\LeanMapperExtension
73+
74+
leanmapper:
75+
db:
76+
host: localhost
77+
username: ...
78+
password: ...
79+
database: mydatabase
80+
81+
services:
82+
- Model\BookRepository
83+
```
84+
85+
**Poznámka:** *rozšíření je dostupné od verze **3.0**.*
86+
87+
### Ruční definice {#toc-nette-config}
88+
89+
Pokud nechceme, nebo nemůžeme použít předpřipravené DI rozšíření, můžeme jednotlivé *služby* definovat ručně. Do konfiguračního souboru aplikace (`config.neon`) si přídáme následující parametry a definice služeb:
90+
91+
``` yaml
92+
parameters:
93+
# údaje pro připojení k DB
94+
leanmapper:
95+
driver: mysqli
96+
host: localhost
97+
username: ...
98+
password: ...
99+
database: mydatabase
100+
101+
services:
102+
# registrace Lean Mapperu
103+
- LeanMapper\Connection(%leanmapper%)
104+
- LeanMapper\DefaultMapper
105+
- LeanMapper\DefaultEntityFactory
106+
107+
# registrace repositářů
108+
- Model\AuthorRepository
109+
- Model\BookRepository
110+
```
111+
112+
Repositářům nemusíme ručně předávat závislosti, o to se automaticky postará [auto-wiring](http://doc.nette.org/cs/2.4/configuring#toc-auto-wiring) v Nette.
113+
114+
115+
### Předání repositáře do presenteru {#toc-nette-presenter}
116+
117+
Preferovaným způsobem je předání závislostí přes konstruktor.
118+
119+
``` php?start_inline=1
120+
class BookPresenter extends BasePresenter {
121+
/** @var \Model\BookRepository */
122+
private $bookRepository;
123+
124+
public function __construct(\Model\BookRepository $bookRepository)
125+
{
126+
$this->bookRepository = $bookRepository;
127+
}
128+
}
129+
```
130+
131+
132+
Alternativně lze pro předání repositáře do presenteru můžeme využít anotaci [`@inject`](https://doc.nette.org/cs/2.4/presenters#toc-pouziti-modelovych-trid).
133+
134+
``` php?start_inline=1
135+
class BookPresenter extends BasePresenter {
136+
/** @var \Model\BookRepository @inject */
137+
public $bookRepository;
138+
139+
...
140+
}
141+
```
142+
143+
V rámci presenteru pak máme repositář přístupný přes `$this->bookRepository`.
144+
145+
[« Mapper](/cs/docs/mapper/) |

cs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ title: Dokumentace
1111
5. [Filtry](/cs/docs/filtry/)
1212
6. [Mapper](/cs/docs/mapper/)
1313
7. [EntityFactory](/cs/docs/entity-factory/)
14+
8. [Integrace LeanMapperu do aplikace](/cs/docs/integrace-do-aplikace/)
1415
* [Ukázky použití a zajímavá řešení](/cs/tutorials/)
1516
* [Changelog](/cs/changelog/)
1617
* [Download](/cs/download/)

0 commit comments

Comments
 (0)