$30 off During Our Annual Pro Sale. View Details »
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
120
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
210
Value objects in PHP
fprochazka
1
210
Jak psát testy na REST API
fprochazka
0
110
V gitu se nic neztratí
fprochazka
0
390
4 roky remote
fprochazka
1
83
Před čím tě Nette ani Symfony neochrání
fprochazka
0
150
Nejlepší cache je žádná cache
fprochazka
0
130
Doctrine: co dělat, když entity nestačí
fprochazka
0
68
Nette framework - How to compile an extensible di container
fprochazka
0
260
Other Decks in Technology
See All in Technology
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
MLflowダイエット大作戦
lycorptech_jp
PRO
1
140
たまに起きる外部サービスの障害に備えたり備えなかったりする話
egmc
0
310
シニアソフトウェアエンジニアになるためには
kworkdev
PRO
3
190
RAG/Agent開発のアップデートまとめ
taka0709
0
190
AIプラットフォームにおけるMLflowの利用について
lycorptech_jp
PRO
1
170
品質のための共通認識
kakehashi
PRO
4
380
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
890
プロンプトやエージェントを自動的に作る方法
shibuiwilliam
13
13k
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
490
打 造 A I 驅 動 的 G i t H u b ⾃ 動 化 ⼯ 作 流 程
appleboy
0
360
Featured
See All Featured
Docker and Python
trallard
47
3.7k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
310
Documentation Writing (for coders)
carmenintech
77
5.2k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
120
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
73
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
My Coaching Mixtape
mlcsv
0
6
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
21
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
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