Skip to content

Commit 8561a7a

Browse files
author
Sander De la Marche
committed
Add more information to UPGRADE guide
1 parent 147d6c9 commit 8561a7a

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

Diff for: UPGRADE.md

+41-1
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,43 @@ Sinds versie 5 zijn ale data attrbiuten van Bootstrap ge"namespaced". Dit wil du
66

77
Je kan dit oplossen door een search & replace te doen door heel je project.
88

9+
```
10+
data-toggle="modal" -> data-bs-toggle="modal"
11+
data-trigger="focus" -> data-bs-trigger="focus"
12+
13+
// etc...
14+
```
915
## PHP
1016

17+
### Manieren om up te graden
18+
Je gaat best door de oude applicatie en maakt een inschatting van welke staat de code & dependencies zijn.
19+
20+
Afhankelijk van de staat van de codebase kies je voor een update strategy:
21+
* Upgrade in het project zelf (laag aantal code changes, geen major dependency changes)
22+
* Volledige rewrite in nieuw Symfony project (structuur van codebase is volledig anders dan moderne Symfony applicatie, veel code changes, veel dependency conflicten)
23+
* Strangler Fig van de oude applicatie (zie https://symfony.com/doc/current/migration.html#introducing-symfony-to-the-existing-application) (legacy project zonder Symfony langzaam migreren naar Symfony)
24+
25+
### Bundles & Namespaces
26+
27+
Als het project <Symfony 3 is, staat je code mogelijk nog in bundles in src/. Indien dit het geval is begin je best met in PHPStorm de oude src/ folder te renamen naar src_old/, een nieuwe src/ folder te maken, en vervolgens alle code uit de bundles samen te voegen in de nieuwe src/ folder. Normaal gezien zal PHPStorm dan automatisch de juiste namespace al klaarzetten in je files.
28+
1129
### Breadcrumbs
1230
De breadcrumbs in onze core bundle zijn niet BC. Als ze nog op de oude manier werken (met de listener in de controller) dan moet je dit manueel refactoren.
1331

32+
Oude manier:
33+
```php
34+
$this->breadCrumbBuilder->addSimpleItem(
35+
'order.header.index',
36+
$this->router->generate(
37+
'qlab_order_order_overview'
38+
)
39+
);
40+
```
41+
Nieuwe manier:
42+
```php
43+
#[Breadcrumb('order.header.index')]
44+
public function __invoke(
45+
```
1446
Als het enkel annotation -> attributen is, kan je volgende Rector sets gebruiken:
1547

1648
```php
@@ -36,7 +68,11 @@ $paginatedItems->paginate($request->query->getInt('page', 1));
3668
### VO -> ENUM
3769
Vroeger gebruikten we veel ValueObjects, ook om simpele string values op te slaan. Sinds PHP8 hebben we hiervoor native enums.
3870

39-
Je kan je VOs dus omzetten naar enums (indien ze enkel een vaste lijst string values kunnen hebben). Zaken zoals Money, Coordinates of Range zijn nog steeds VOs. Zaken zoals Gender, Province, etc.. zijn dus enums.
71+
Je kan je VOs dus omzetten naar enums (indien ze enkel een vaste lijst string values kunnen hebben). Zaken zoals Money, Coordinates of Range zijn nog steeds VOs. Zaken zoals Gender, Province, etc.. zijn enums.
72+
73+
Hiervoor is geen tool beschikbaar, Rector kan dit niet. Je moet dus zelf enums gaan maken en overal in de code dit aanpassen. Omdat dit best wel veel werk is, is het niet altijd de moeite om dit te doen. Is een nice-to-have.
74+
75+
In je entities gebruik je `#[ORM\COlumn(enumType: <enum_fqcn>)` van Doctrine. In je Symfony forms gebruik je het `EnumType` form type.
4076

4177
```php
4278
enum Gender: string
@@ -91,6 +127,8 @@ return function (RectorConfig $rectorConfig): void {
91127
```
92128

93129
### Security
130+
Pre Symfony 5 was de security.yaml anders. Onder andere de password encoders/hashers config is aangepast.
131+
94132
config/packages/security.yaml
95133
```yaml
96134
# oud
@@ -103,7 +141,9 @@ config/packages/security.yaml
103141
Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'
104142
```
105143
144+
Indien er een oude user implementatie (met msgphp bundle, of iets ouder) in het projet zit, is het vaak het snelst om alles weg te smijten en https://github.com/sumocoders/Framework-User-Implementation-Example opnieuw over te nemen.
106145
### Config
146+
De Sentry configuratie om errors te ignoren is aangepast. Je gebruikt nu best deze syntax:
107147
108148
config/packages/sentry.yaml
109149
```yaml

0 commit comments

Comments
 (0)