Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Co se PHP programátor může naučit od Javy?
Search
Filip Procházka
October 28, 2017
Technology
1
62
Co se PHP programátor může naučit od Javy?
Filip Procházka
October 28, 2017
Tweet
Share
More Decks by Filip Procházka
See All by Filip Procházka
Evolving architecture
fprochazka
0
84
Value objects in PHP
fprochazka
1
140
Jak psát testy na REST API
fprochazka
0
49
V gitu se nic neztratí
fprochazka
0
270
4 roky remote
fprochazka
1
62
Před čím tě Nette ani Symfony neochrání
fprochazka
0
120
Nejlepší cache je žádná cache
fprochazka
0
82
Doctrine: co dělat, když entity nestačí
fprochazka
0
40
Nette framework - How to compile an extensible di container
fprochazka
0
110
Other Decks in Technology
See All in Technology
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
私が trocco を推す理由
__allllllllez__
1
250
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
230
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
210
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
330
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
2
900
[新卒向け研修資料] テスト文字列に「うんこ」と入れるな(2024年版)
infiniteloop_inc
4
16k
データベース02: データベースの概念
trycycle
0
160
Building a RAG-poweredAI chat appwith Python and VS Code
pamelafox
0
100
Azure犬駆動開発の記録/GlobalAzureFukuoka2024_20240420
nina01
1
220
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
140
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.8k
Featured
See All Featured
Fontdeck: Realign not Redesign
paulrobertlloyd
76
4.9k
Learning to Love Humans: Emotional Interface Design
aarron
267
39k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
[RailsConf 2023] Rails as a piece of cake
palkan
23
4k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
4 Signs Your Business is Dying
shpigford
175
21k
Build The Right Thing And Hit Your Dates
maggiecrowley
24
2k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Making the Leap to Tech Lead
cromwellryan
124
8.5k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
78
43k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
Transcript
Co se PHP programátor může naučit od Javy? @ProchazkaFilip
Návrhové vzory jsou super • Decorator • Strategy • Visitor
• Builder • Factory • BuilderFactory ❤ • FactoryBuilderFactory ❤❤ • BuilderFactoryBuilderFactory ❤❤❤
None
“Patterns always have two parts: the how and the when.
Not just do you need to know how to implement them, you also have to know when to use them and when to leave them alone.” ~ Martin Fowler
• Premature abstraction • Premature optimalization • … • Nejprve
“nahrubo” • Dodržovat základní pravidla • Po pochopení refaktoring YAGNI
Don’t reinvent the wheel: Hotová řešení • Frameworky ◦ Spring
vs Nette vs Symfony • Knihovny ◦ Hibernate vs Doctrine • Články • Nástroje • ….
Don’t reinvent the wheel: Standardy • JSR 354: Money and
Currency API ◦ https://github.com/brick/money • JSR 310: Date and Time API ◦ https://github.com/brick/date-time
Compile-time • Kompilace je spása ◦ Chvilku trvá... ◦ Nenahrazuje
testy! • PHPStan https://xkcd.com/303/
(silné) Typy!
Silné typy: array • Std lib + Generika ◦ Map<LocalDate,
List<LocalTime>> ◦ LinkedList vs ArrayList ◦ HashMap vs TreeMap • PHPDoc ◦ Příklady v PHPStan testech /** @var Collection|Dolor[] */ private $dolors;
Silné typy: string • Musí být typehint string? • Nešlo
by to lépe?
Value objects • VO vs Entity • Hodnota vs identita
Value objects • PHP nemá Time ani Date, má Datetime
◦ Můžu si napsat vlastní ◦ Nebo můžu použít Brick! :) • EmailAddress • PhoneNumber • Url (Nette) • DateRange, TimeRange, NumberRange • PostalAddress ◦ Může a nemusí být VO
Value objects: vlastnosti • Rovnost ◦ == vs === vs
equals() • Validita • Immutabilita • VO != DTO
Shrnutí • Návrhové vzory jsou super • Don’t reinvent the
wheel • Silné typy • Value objects
@ProchazkaFilip