SlideShare a Scribd company logo
W H Y D O I L O V E A N D H AT E P H P ?
Ł U K A S Z C H R U Ś C I E L
/291
– FA B I E N P O T E N C I E R
„People hate PHP as a Language
People like PHP as a Platform”
/292
Silex
Twig
PHP-CS-FIXER
Pimple
/293
T H I S G U Y K N O W S W H AT
H E I S S AY I N G !
/294
/295
https://scontent-cdg2-1.xx.fbcdn.net/hphotos-xpf1/v/t1.0-9/11988277_940537889346397_4268350028529041140_n.jpg?oh=21667a717b8f08e939ce38a7a95e0117&oe=566A7EDA
H AT E
/296
• http://webonastick.com/php.html
• http://phpsadness.com/
• http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
• http://whydoesitsuck.com/why-does-php-suck/
• http://pythonhaspower.com/posts/2014/06/php-i-python-biznesowe-por
%C3%B3wnanie-budowy-aplikacji/
And many more…
B A D O P I N I O N
/297
(bool) „true” => true
(bool) „1” => true
(bool) 1 => true
(bool) -1 => true
(bool) 0 => false
(bool) „” => false
(bool) array() => ?
(bool) „false” => ?
(bool) „0” => ?
I N C O N S I S T E N C Y - B O O L E A N S
/298
(bool) „true” => true
(bool) „1” => true
(bool) 1 => true
(bool) -1 => true
(bool) 0 => false
(bool) „” => false
(bool) array() => false
(bool) „false” => true
(bool) „0” => false
I N C O N S I S T E N C Y - B O O L E A N S
/299
http://php.net/manual/en/language.types.boolean.php
I N C O N S I S T E N C Y - D O C S
/2910
http://php.net/manual/en/class.datetime.php http://php.net/manual/pl/class.datetime.php
strpos(haystack, needle, offset)
array_search(needle, haystack, strict)
urlencode()
utf8_encode()
get_class()
array_merge()
strlen()
str_pad()
I N C O N S I S T E N C Y - N A M I N G
/2911
E A S Y T O U S E : (
Fast to set up
Used even for complicated projects
Flexible
/2912
I T I S N O T 2 0 0 4 A N Y M O R E
/2913
L E T ’ S FA C E T H E T R U T H
facebook.com
baidu.com
wikipedia.org
twitter.com
/2914
http://w3techs.com/technologies/details/pl-php/all/all
http://w3techs.com/technologies/overview/programming_language/all
L O V E
/2915
R U L E S
SOLID
KISS
YAGNI
DRY
Object Calisthenics
Clean Code
OOP
/2916
T O O L S
Silex
Symfony
Drupal
Laravel
Behat
PHPSpec
Codeception
Typo3
Sylius
PHPUnit
Twig
/2917
Joomla
WordpressZend
L E A R N I N G F R O M O T H E R S
/2918
C O M M U N I T Y
MIT
Open Source
Packagist
Composer
/2919
PA C K A G I S T - S TAT I S T I C S
/2920
https://packagist.org/statistics
E A S Y T O U S E !
Fast to set up
Good even for complicated projects
Flexible
/2921
P H P S P E C - M A G I C A L F L E X I B I L I T Y
function it_calculates_tax_as_percentage_of_given_base (
TaxRateInterface $rate
) {
$rate->getAmount()->willReturn(0.23);
$this->calculate(10000, $rate)->shouldReturn(2300);
}
/2922
F U T U R E
/2923
P H P 7
/2924
W H AT ’ S N E W O R W H AT ’ S B E T T E R
• Performance
• Exceptions on fatals
• Scalar typehints
• Return typehints
• Removal of many deprecated features
/2925
And much more…
http://talks.php.net/fluent15#/php7
P E R F O R M A N C E
/2926
http://talks.php.net/fluent15#/wpbench
http://talks.php.net/fluent15#/drupalbench
– A L M U A L I M
„You are not free to do what you want”
/2927
„With great flexibility comes great responsibility”
/2928
Q U E S T I O N S ?
/2929
Łukasz Chruściel
@lukaszchrusciel
https://github.com/lchrusciel

More Related Content

What's hot

Bledsoe_Dustin_Final_PPP
Bledsoe_Dustin_Final_PPPBledsoe_Dustin_Final_PPP
Bledsoe_Dustin_Final_PPP
DGBledsoe
 
2007 Teaching And Learning Forum
2007 Teaching And Learning Forum2007 Teaching And Learning Forum
2007 Teaching And Learning Forum
Rupert Owen
 
Offline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failuresOffline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failures
Pedro Teixeira
 
Data Science Festival - Beginners Guide to Weather and Climate Data
Data Science Festival - Beginners Guide to Weather and Climate DataData Science Festival - Beginners Guide to Weather and Climate Data
Data Science Festival - Beginners Guide to Weather and Climate Data
Margriet Groenendijk
 
ElasticSearch Dump
ElasticSearch DumpElasticSearch Dump
ElasticSearch Dump
PeckaDesign.cz
 
102912 vogel denise slideshare documents (hindi)
102912   vogel denise slideshare documents (hindi)102912   vogel denise slideshare documents (hindi)
102912 vogel denise slideshare documents (hindi)VogelDenise
 
Presentation1
Presentation1Presentation1
Presentation1nooch33
 
Hackathon Tips and Tricks
Hackathon Tips and TricksHackathon Tips and Tricks
Hackathon Tips and Tricks
Daniel Duan
 
EdTech & New Media
EdTech & New Media EdTech & New Media
EdTech & New Media
Sascha Funk
 
Collaboration Tools: Ease your sign-off pains
Collaboration Tools: Ease your sign-off painsCollaboration Tools: Ease your sign-off pains
Collaboration Tools: Ease your sign-off pains
Mark Skeet
 
Pregnancy travel-essentials
Pregnancy travel-essentialsPregnancy travel-essentials
Pregnancy travel-essentials
bugshieldclothing1
 
Dia chi trang web hay vo doi
Dia chi trang web hay vo doiDia chi trang web hay vo doi
Dia chi trang web hay vo doi
QaPhy-Duong MTE
 
TypeSpecimenBook_mr_v2
TypeSpecimenBook_mr_v2TypeSpecimenBook_mr_v2
TypeSpecimenBook_mr_v2Maria Rios
 
How to please the editor
How to please the editorHow to please the editor
How to please the editor
Patrick Broens
 
Karina tabron final-visuals
Karina tabron final-visualsKarina tabron final-visuals
Karina tabron final-visuals
ktabron18
 
102912 vogel denise slideshare documents (bengali)
102912   vogel denise slideshare documents (bengali)102912   vogel denise slideshare documents (bengali)
102912 vogel denise slideshare documents (bengali)VogelDenise
 
Twiplomacy - How World Leaders use and abuse Twitter
Twiplomacy - How World Leaders use and abuse TwitterTwiplomacy - How World Leaders use and abuse Twitter
Twiplomacy - How World Leaders use and abuse Twitter
Matthias Lüfkens
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
Vincenzo Barone
 
Watkins will ppp_visuals
Watkins will ppp_visualsWatkins will ppp_visuals
Watkins will ppp_visuals
Will Watkins
 

What's hot (19)

Bledsoe_Dustin_Final_PPP
Bledsoe_Dustin_Final_PPPBledsoe_Dustin_Final_PPP
Bledsoe_Dustin_Final_PPP
 
2007 Teaching And Learning Forum
2007 Teaching And Learning Forum2007 Teaching And Learning Forum
2007 Teaching And Learning Forum
 
Offline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failuresOffline-first: Making your app resilient to network failures
Offline-first: Making your app resilient to network failures
 
Data Science Festival - Beginners Guide to Weather and Climate Data
Data Science Festival - Beginners Guide to Weather and Climate DataData Science Festival - Beginners Guide to Weather and Climate Data
Data Science Festival - Beginners Guide to Weather and Climate Data
 
ElasticSearch Dump
ElasticSearch DumpElasticSearch Dump
ElasticSearch Dump
 
102912 vogel denise slideshare documents (hindi)
102912   vogel denise slideshare documents (hindi)102912   vogel denise slideshare documents (hindi)
102912 vogel denise slideshare documents (hindi)
 
Presentation1
Presentation1Presentation1
Presentation1
 
Hackathon Tips and Tricks
Hackathon Tips and TricksHackathon Tips and Tricks
Hackathon Tips and Tricks
 
EdTech & New Media
EdTech & New Media EdTech & New Media
EdTech & New Media
 
Collaboration Tools: Ease your sign-off pains
Collaboration Tools: Ease your sign-off painsCollaboration Tools: Ease your sign-off pains
Collaboration Tools: Ease your sign-off pains
 
Pregnancy travel-essentials
Pregnancy travel-essentialsPregnancy travel-essentials
Pregnancy travel-essentials
 
Dia chi trang web hay vo doi
Dia chi trang web hay vo doiDia chi trang web hay vo doi
Dia chi trang web hay vo doi
 
TypeSpecimenBook_mr_v2
TypeSpecimenBook_mr_v2TypeSpecimenBook_mr_v2
TypeSpecimenBook_mr_v2
 
How to please the editor
How to please the editorHow to please the editor
How to please the editor
 
Karina tabron final-visuals
Karina tabron final-visualsKarina tabron final-visuals
Karina tabron final-visuals
 
102912 vogel denise slideshare documents (bengali)
102912   vogel denise slideshare documents (bengali)102912   vogel denise slideshare documents (bengali)
102912 vogel denise slideshare documents (bengali)
 
Twiplomacy - How World Leaders use and abuse Twitter
Twiplomacy - How World Leaders use and abuse TwitterTwiplomacy - How World Leaders use and abuse Twitter
Twiplomacy - How World Leaders use and abuse Twitter
 
How to market Plone the Web2.0 way
How to market Plone the Web2.0 wayHow to market Plone the Web2.0 way
How to market Plone the Web2.0 way
 
Watkins will ppp_visuals
Watkins will ppp_visualsWatkins will ppp_visuals
Watkins will ppp_visuals
 

More from Łukasz Chruściel

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
Łukasz Chruściel
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
Łukasz Chruściel
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
Łukasz Chruściel
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdf
Łukasz Chruściel
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
Łukasz Chruściel
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdf
Łukasz Chruściel
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Łukasz Chruściel
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf
Łukasz Chruściel
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf
Łukasz Chruściel
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
Łukasz Chruściel
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius API
Łukasz Chruściel
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdf
Łukasz Chruściel
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdf
Łukasz Chruściel
 
How to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets BlackfireHow to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets Blackfire
Łukasz Chruściel
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
Łukasz Chruściel
 
Sylius and Api Platform The story of integration
Sylius and Api Platform The story of integrationSylius and Api Platform The story of integration
Sylius and Api Platform The story of integration
Łukasz Chruściel
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machine
Łukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
Łukasz Chruściel
 

More from Łukasz Chruściel (20)

Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdf
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdf
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius API
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdf
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdf
 
How to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets BlackfireHow to optimize background processes - when Sylius meets Blackfire
How to optimize background processes - when Sylius meets Blackfire
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
 
Sylius and Api Platform The story of integration
Sylius and Api Platform The story of integrationSylius and Api Platform The story of integration
Sylius and Api Platform The story of integration
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machine
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 

Recently uploaded

制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
cuobya
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
Toptal Tech
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
fovkoyb
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Brad Spiegel Macon GA
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
ukwwuq
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
wolfsoftcompanyco
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
vmemo1
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
Arif0071
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
Javier Lasa
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
Trending Blogers
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 

Recently uploaded (20)

制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!Ready to Unlock the Power of Blockchain!
Ready to Unlock the Power of Blockchain!
 
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
存档可查的(USC毕业证)南加利福尼亚大学毕业证成绩单制做办理
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptx
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalmanuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
manuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaal
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
重新申请毕业证书(RMIT毕业证)皇家墨尔本理工大学毕业证成绩单精仿办理
 
test test test test testtest test testtest test testtest test testtest test ...
test test  test test testtest test testtest test testtest test testtest test ...test test  test test testtest test testtest test testtest test testtest test ...
test test test test testtest test testtest test testtest test testtest test ...
 
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdfJAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
JAVIER LASA-EXPERIENCIA digital 1986-2024.pdf
 
Explore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories SecretlyExplore-Insanony: Watch Instagram Stories Secretly
Explore-Insanony: Watch Instagram Stories Secretly
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 

Why do I love and hate php?

  • 1. W H Y D O I L O V E A N D H AT E P H P ? Ł U K A S Z C H R U Ś C I E L /291
  • 2. – FA B I E N P O T E N C I E R „People hate PHP as a Language People like PHP as a Platform” /292
  • 4. T H I S G U Y K N O W S W H AT H E I S S AY I N G ! /294
  • 7. • http://webonastick.com/php.html • http://phpsadness.com/ • http://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/ • http://whydoesitsuck.com/why-does-php-suck/ • http://pythonhaspower.com/posts/2014/06/php-i-python-biznesowe-por %C3%B3wnanie-budowy-aplikacji/ And many more… B A D O P I N I O N /297
  • 8. (bool) „true” => true (bool) „1” => true (bool) 1 => true (bool) -1 => true (bool) 0 => false (bool) „” => false (bool) array() => ? (bool) „false” => ? (bool) „0” => ? I N C O N S I S T E N C Y - B O O L E A N S /298
  • 9. (bool) „true” => true (bool) „1” => true (bool) 1 => true (bool) -1 => true (bool) 0 => false (bool) „” => false (bool) array() => false (bool) „false” => true (bool) „0” => false I N C O N S I S T E N C Y - B O O L E A N S /299 http://php.net/manual/en/language.types.boolean.php
  • 10. I N C O N S I S T E N C Y - D O C S /2910 http://php.net/manual/en/class.datetime.php http://php.net/manual/pl/class.datetime.php
  • 11. strpos(haystack, needle, offset) array_search(needle, haystack, strict) urlencode() utf8_encode() get_class() array_merge() strlen() str_pad() I N C O N S I S T E N C Y - N A M I N G /2911
  • 12. E A S Y T O U S E : ( Fast to set up Used even for complicated projects Flexible /2912
  • 13. I T I S N O T 2 0 0 4 A N Y M O R E /2913
  • 14. L E T ’ S FA C E T H E T R U T H facebook.com baidu.com wikipedia.org twitter.com /2914 http://w3techs.com/technologies/details/pl-php/all/all http://w3techs.com/technologies/overview/programming_language/all
  • 15. L O V E /2915
  • 16. R U L E S SOLID KISS YAGNI DRY Object Calisthenics Clean Code OOP /2916
  • 17. T O O L S Silex Symfony Drupal Laravel Behat PHPSpec Codeception Typo3 Sylius PHPUnit Twig /2917 Joomla WordpressZend
  • 18. L E A R N I N G F R O M O T H E R S /2918
  • 19. C O M M U N I T Y MIT Open Source Packagist Composer /2919
  • 20. PA C K A G I S T - S TAT I S T I C S /2920 https://packagist.org/statistics
  • 21. E A S Y T O U S E ! Fast to set up Good even for complicated projects Flexible /2921
  • 22. P H P S P E C - M A G I C A L F L E X I B I L I T Y function it_calculates_tax_as_percentage_of_given_base ( TaxRateInterface $rate ) { $rate->getAmount()->willReturn(0.23); $this->calculate(10000, $rate)->shouldReturn(2300); } /2922
  • 23. F U T U R E /2923
  • 24. P H P 7 /2924
  • 25. W H AT ’ S N E W O R W H AT ’ S B E T T E R • Performance • Exceptions on fatals • Scalar typehints • Return typehints • Removal of many deprecated features /2925 And much more… http://talks.php.net/fluent15#/php7
  • 26. P E R F O R M A N C E /2926 http://talks.php.net/fluent15#/wpbench http://talks.php.net/fluent15#/drupalbench
  • 27. – A L M U A L I M „You are not free to do what you want” /2927
  • 28. „With great flexibility comes great responsibility” /2928
  • 29. Q U E S T I O N S ? /2929 Łukasz Chruściel @lukaszchrusciel https://github.com/lchrusciel