Skip to content

Commit 28e1638

Browse files
committed
1 parent bc56f9e commit 28e1638

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-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: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
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+
* [Předání repositáře do presenteru](#toc-nette-presenter)
12+
13+
14+
## Vytvoření připojení {#toc-pripojeni}
15+
16+
Vytvoříme si objekt `LeanMapper\Connection` a předáme mu parametry potřebné pro připojení k databázi.
17+
18+
``` php?start_inline=1
19+
$connection = new LeanMapper\Connection(array(
20+
'driver' => 'mysqli',
21+
'host' => 'localhost',
22+
'username' => 'root',
23+
'password' => '***',
24+
'database' => 'mydatabase',
25+
));
26+
```
27+
28+
**Tip:** `LeanMapper\Connection` přebírá stejné parametry jako třída [`DibiConnection`](https://api.dibiphp.com/3.0/Dibi.Connection.html).
29+
30+
31+
## Mapper {#toc-mapper}
32+
33+
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`.
34+
35+
``` php?start_inline=1
36+
$mapper = new LeanMapper\DefaultMapper;
37+
```
38+
39+
40+
## Entity factory {#toc-entityfactory}
41+
42+
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`.
43+
44+
``` php?start_inline=1
45+
$entityFactory = new LeanMapper\DefaultEntityFactory;
46+
```
47+
48+
49+
## Repositáře {#toc-repositare}
50+
51+
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.
52+
53+
``` php?start_inline=1
54+
$bookRepository = new Model\BookRepository($connection, $mapper, $entityFactory);
55+
```
56+
57+
A to je vše.
58+
59+
60+
## Integrace do Nette aplikace {#toc-nette}
61+
62+
Ještě si ukážeme, jak použít Lean Mapper v rámci aplikace napsané v [Nette](https://nette.org). Do konfiguračního souboru aplikace (`config.neon`) si přídáme následující parametry a definice služeb:
63+
64+
``` yaml
65+
parameters:
66+
# údaje pro připojení k DB
67+
leanmapper:
68+
driver: mysqli
69+
host: localhost
70+
username: ...
71+
password: ...
72+
database: mydatabase
73+
74+
# ...
75+
76+
services:
77+
# registrace Lean Mapperu
78+
- LeanMapper\Connection(%leanmapper%)
79+
- LeanMapper\DefaultMapper
80+
- LeanMapper\DefaultEntityFactory
81+
82+
# registrace repositářů
83+
- Model\BookRepository
84+
- Model\AuthorRepository
85+
- ...
86+
87+
# ...
88+
```
89+
90+
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.
91+
92+
93+
### Předání repositáře do presenteru {#toc-nette-presenter}
94+
95+
Pro předání repositáře do presenteru můžeme využít anotaci `@inject`.
96+
97+
``` php?start_inline=1
98+
class BookPresenter extends BasePresenter {
99+
/** @var \Model\BookRepository @inject */
100+
public $bookRepository;
101+
102+
...
103+
}
104+
```
105+
106+
V rámci presenteru pak máme repositář přístupný přes `$this->bookRepository`.
107+
108+
**Tip:** pokud nechcete, nebo nemůžete použít anotaci `@inject`, lze pro předání repositáře použít constructor nebo [`inject*()` metodu](http://pla.nette.org/cs/inject-autowire).
109+
110+
111+
112+
113+
114+
[« 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)