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
An Introduction to PHP ... And Why It's Yucky!
Search
Jorge Silva
November 13, 2014
Technology
1
210
An Introduction to PHP ... And Why It's Yucky!
A short introduction to some of the good parts and bad parts of PHP. Mostly the bad parts.
Jorge Silva
November 13, 2014
Tweet
Share
More Decks by Jorge Silva
See All by Jorge Silva
Introduction to RethinkDB : Move fast and break things
thejsj
2
270
ForwardJS - RethinkDB - Getting Started
thejsj
0
210
ForwardJS - RethinkDB - Advanced Queries
thejsj
1
210
Automatic Failover in RethinkDB
thejsj
0
240
Workshop: Introduction to RethinkDB : Santa Cruz JS
thejsj
1
130
Push databases: A better way to build realtime apps
thejsj
0
130
Data Modeling in RethinkDB
thejsj
4
280
RethinkDB+Angular.js: Building realtime web applications
thejsj
10
30k
Introduction to RethinkDB: 1KE Meetup
thejsj
0
56
Other Decks in Technology
See All in Technology
データとAIで未来を創るDatabricks - 君の可能性を加速させるプラットフォーム
taka_aki
0
110
⽣成 AI で進化する AWS オブザーバビリティ
o11yfes2023
0
110
Claude Code 10連ガチャ
uhyo
3
680
re:Invent完全攻略ガイド
junjikoide
1
340
AIと共に開発する時代の組織、プロセス設計 freeeでの実践から見えてきたこと
freee
3
700
CloudFormationコンソールから、実際に作られたリソースを辿れるようになろう!
amixedcolor
1
190
明日から真似してOk!NOT A HOTELで実践している入社手続きの自動化
nkajihara
1
670
バグと向き合い、仕組みで防ぐ
____rina____
0
280
探求の技術
azukiazusa1
7
2.1k
米軍Platform One / Black Pearlに学ぶ極限環境DevSecOps
jyoshise
1
270
ある編集者のこれまでとこれから —— 開発者コミュニティと歩んだ四半世紀
inao
4
3k
[CV勉強会@関東 ICCV2025] WoTE: End-to-End Driving with Online Trajectory Evaluation via BEV World Model
shinkyoto
0
250
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
KATA
mclloyd
PRO
32
15k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Designing for humans not robots
tammielis
254
26k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Making Projects Easy
brettharned
120
6.4k
GitHub's CSS Performance
jonrohan
1032
470k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Transcript
<?php ?> echo `An introduction to PHP`;
<?php ?> echo `An introduction to PHP`; echo `7 reasons
why it’s yucky`;
<?php ?> echo `First, the good parts`; var_dump([ `Web’s most
popular server lang`, `Incredibly easy to deploy`, `WordPress, uber popular framework`, `Templating is built-in` ]);
<?php ?> echo `Problem #1`; echo `Templating is built-in`; foreach($arr
as $el) { echo `<p>`; echo doSomeMysteriousThing($el); echo `</p>`; }
<?php ?> echo `Problem #2`; echo `It can be very
inconsistent`; echo 'hello \nworld'; // hello \nworld echo "hello \nworld"; // hello // world
<?php ?> echo `Problem #3`; echo `Everything is a function!!!`;
array_push($arr, `abc`); // 5.3 array_key_exists($arr, `abc`); // bool $r = array_merge($arr, [`abc`]); $r = array_map(`func`, $arr); $r = count($arr);
<?php ?> echo `Problem #4`; echo `Equality is unequal`; `6`
== ` 6` // true `133` == `0133` && 133 != 0133; // true `foo` == 0 && `foo` == true; // true NULL < -1 && NULL == 0; // true
<?php ?> echo `Problem #5`; echo `Scope is weird...`; if
(1 === 1) { $v = `if`; } function a() { $v = `a`; } function b() { global $v; $v = `b`; } a(); echo $v; // `if` b(); echo $v; // `b`
<?php ?> echo `Problem #6`; echo `Debugging is terrible!`; echo
$arr; // `Array` print_r($arr); // Array ( [0] => 1 [1] var_dump($arr); // array(4) { [0]=> int( var_dump(debug_backtrace());
<?php ?> echo `Problem #7`; echo `Documentation is terrible`; echo
($documentation == $forum); // 1
<?php ?> echo `In the end...`;
<?php ?> echo `In the end...`; echo `...it doesn’t matter
that much`; $u = `http://blog.codinghorror.com/`; $u .= `php-sucks-but-it-doesnt-matter`; echo $u;