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
130
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
230
Value objects in PHP
fprochazka
1
220
Jak psát testy na REST API
fprochazka
0
110
V gitu se nic neztratí
fprochazka
0
390
4 roky remote
fprochazka
1
86
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
270
Other Decks in Technology
See All in Technology
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
410
Mosaic AI Gatewayでコーディングエージェントを配るための運用Tips / JEDAI 2026 新春 Meetup! AIコーディング特集
genda
0
140
AIとともに歩む情報セキュリティ / Information Security with AI
kanny
4
3.1k
今日から始めるAmazon Bedrock AgentCore
har1101
4
320
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
600
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
290
Tebiki Engineering Team Deck
tebiki
0
23k
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.1k
しろおびセキュリティへ ようこそ
log0417
0
250
日本語テキストと音楽の対照学習の技術とその応用
lycorptech_jp
PRO
1
410
AIと新時代を切り拓く。これからのSREとメルカリIBISの挑戦
0gm
0
590
Kiro IDEのドキュメントを全部読んだので地味だけどちょっと嬉しい機能を紹介する
khmoryz
0
120
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.9k
Building the Perfect Custom Keyboard
takai
2
680
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
The Language of Interfaces
destraynor
162
26k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Leo the Paperboy
mayatellez
4
1.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Test your architecture with Archunit
thirion
1
2.1k
[SF Ruby Conf 2025] Rails X
palkan
0
740
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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