Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann I Tobias...

113
Web development with PHP Kore Nordmann <[email protected]> Tobias Schlitt <[email protected]> Jakob Westhoff <[email protected]> 08.12.2009 http://kore-nordmann.de/portfolio.html Kore Nordmann <[email protected]>

Transcript of Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann I Tobias...

Page 1: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Web development with PHP

Kore Nordmann <[email protected]>Tobias Schlitt <[email protected]>

Jakob Westhoff <[email protected]>

08.12.2009

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 2: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Speaker 2 / 41

I The speakersI Kore Nordmann <[email protected]>I Tobias Schlitt <[email protected]>I Jakob Westhoff <[email protected]>

I Active in various PHP related open source projectsI PHPUnit [37], eZ Components [6], PEAR [13], PHP [18] itself,

. . .

I Speaker on various webtechnology related conferencesI International PHP Conference, WebtechCon, FrOSCon, . . .

I Regular authors in various magazinesI PHP Magazine, Linux Magazine, . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 3: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Speaker 2 / 41

I The speakersI Kore Nordmann <[email protected]>I Tobias Schlitt <[email protected]>I Jakob Westhoff <[email protected]>

I Active in various PHP related open source projectsI PHPUnit [37], eZ Components [6], PEAR [13], PHP [18] itself,

. . .

I Speaker on various webtechnology related conferencesI International PHP Conference, WebtechCon, FrOSCon, . . .

I Regular authors in various magazinesI PHP Magazine, Linux Magazine, . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 4: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Speaker 2 / 41

I The speakersI Kore Nordmann <[email protected]>I Tobias Schlitt <[email protected]>I Jakob Westhoff <[email protected]>

I Active in various PHP related open source projectsI PHPUnit [37], eZ Components [6], PEAR [13], PHP [18] itself,

. . .

I Speaker on various webtechnology related conferencesI International PHP Conference, WebtechCon, FrOSCon, . . .

I Regular authors in various magazinesI PHP Magazine, Linux Magazine, . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 5: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Speaker 2 / 41

I The speakersI Kore Nordmann <[email protected]>I Tobias Schlitt <[email protected]>I Jakob Westhoff <[email protected]>

I Active in various PHP related open source projectsI PHPUnit [37], eZ Components [6], PEAR [13], PHP [18] itself,

. . .

I Speaker on various webtechnology related conferencesI International PHP Conference, WebtechCon, FrOSCon, . . .

I Regular authors in various magazinesI PHP Magazine, Linux Magazine, . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 6: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

General 3 / 41

I Please ask!I Whenever a question occursI How stupid you think the question might be

I Slides will be online later today onI http://udo.edu/.../php.zip

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 7: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

General 3 / 41

I Please ask!I Whenever a question occursI How stupid you think the question might be

I Slides will be online later today onI http://udo.edu/.../php.zip

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 8: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Who uses PHP? 4 / 41

I Do you?I What do you do with PHP?I Do you like / hate PHP?I Did you already use PHP 4 (maybe even 3)?

I In the “real” world:I Yahoo, Facebook, StudiVZ, Wikipedia, . . .I Siemens, T-Online, . . .I Add $bigCompany here

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 9: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Who uses PHP? 4 / 41

I Do you?I What do you do with PHP?I Do you like / hate PHP?I Did you already use PHP 4 (maybe even 3)?

I In the “real” world:I Yahoo, Facebook, StudiVZ, Wikipedia, . . .I Siemens, T-Online, . . .I Add $bigCompany here

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 10: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What is PHP? 5 / 41

I Most important programming language in the webI Third popular language (TIOBE) [40]

I Easy to learnI Web-centric, but not web-only

I CLI [20]I GTK [22]I Embedded [?]

I Portable

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 11: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What is PHP? 5 / 41

I Most important programming language in the webI Third popular language (TIOBE) [40]

I Easy to learnI Web-centric, but not web-only

I CLI [20]I GTK [22]I Embedded [?]

I Portable

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 12: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What is PHP? 5 / 41

I Most important programming language in the webI Third popular language (TIOBE) [40]

I Easy to learnI Web-centric, but not web-only

I CLI [20]I GTK [22]I Embedded [?]

I Portable

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 13: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What is PHP? 5 / 41

I Most important programming language in the webI Third popular language (TIOBE) [40]

I Easy to learnI Web-centric, but not web-only

I CLI [20]I GTK [22]I Embedded [?]

I Portable

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 14: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Use Case: StudiVZ 6 / 41

I 550 High-End-Server

I 2,200 Processor Cores

I 7,000 GB RAM

I Peek 4,300 Mbit / sec.

I Peek 150,000 database queries / sec.

I Statistics estimated in June 2009

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 15: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Open Source 7 / 41

I Vital Open Source communityI Professionals

I Zend (Zend Engine 2)I IBM (Project Zero)I Yahoo! (APC)I eZ Systems (Xdebug)I . . .

I VolunteersI Extension developersI TestersI Documentors (12 languages)I User-space librariesI (PEAR, Zend Framework, eZ Components,...)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 16: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Open Source 7 / 41

I Vital Open Source communityI Professionals

I Zend (Zend Engine 2)I IBM (Project Zero)I Yahoo! (APC)I eZ Systems (Xdebug)I . . .

I VolunteersI Extension developersI TestersI Documentors (12 languages)I User-space librariesI (PEAR, Zend Framework, eZ Components,...)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 17: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Open Source 7 / 41

I Vital Open Source communityI Professionals

I Zend (Zend Engine 2)I IBM (Project Zero)I Yahoo! (APC)I eZ Systems (Xdebug)I . . .

I VolunteersI Extension developersI TestersI Documentors (12 languages)I User-space librariesI (PEAR, Zend Framework, eZ Components,...)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 18: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 8 / 41

History

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 19: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 20: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 21: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 22: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 23: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 24: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The past 8 / 41

I PHP/FI (Personal Homepage Tools / Form Interpreter)I Collection of Perl scripts from Rasmus LerdorfI Converted to C a bit later

I PHP 3 (PHP Hypertext Preprocessor)I Rewrite by Andi Gutmans and Zeev SuraskiI Zend develops the Zend Engine 1

I PHP 4I Merges parts of PHPlib (Sessions)I Very simple object orientation

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 25: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The present 9 / 41

I PHP 5 / Zend Engine 2I “Real” object orientationI Important features

I Better XML handlingI Database abstraction layerI Major speed improvements

I PHP 5 has actually been released four years ago.

I Support for PHP 4 has officially been dropped end 2007.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 26: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The present 9 / 41

I PHP 5 / Zend Engine 2I “Real” object orientationI Important features

I Better XML handlingI Database abstraction layerI Major speed improvements

I PHP 5 has actually been released four years ago.

I Support for PHP 4 has officially been dropped end 2007.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 27: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The present 9 / 41

I PHP 5 / Zend Engine 2I “Real” object orientationI Important features

I Better XML handlingI Database abstraction layerI Major speed improvements

I PHP 5 has actually been released four years ago.

I Support for PHP 4 has officially been dropped end 2007.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 28: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The future 10 / 41

I PHP 5.3I Namespaces [25]I Late static binding [24]I Closures / lambda functions [19]I Goto (sic!)

I PHP 6 / PHP 5.4 (no promises!)I Native Unicode supportI TraitsI Cleanup of deprecated features

I Register globalsI Safe modeI ...

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 29: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

The future 10 / 41

I PHP 5.3I Namespaces [25]I Late static binding [24]I Closures / lambda functions [19]I Goto (sic!)

I PHP 6 / PHP 5.4 (no promises!)I Native Unicode supportI TraitsI Cleanup of deprecated features

I Register globalsI Safe modeI ...

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 30: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 11 / 41

Architecture

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 31: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Tim Bray (Sun): 11 / 41

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 32: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (1/2) 12 / 41

I Typing:I Dynamic (similar to Python, Perl)I Weak (similar to JavaScript, Python, Ruby)

I ParadigmsI ImperativeI ProceduralI Object orientedI FunctionalI StructuredI (Aspect oriented)

I Freedom vs. Clarity

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 33: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (1/2) 12 / 41

I Typing:I Dynamic (similar to Python, Perl)I Weak (similar to JavaScript, Python, Ruby)

I ParadigmsI ImperativeI ProceduralI Object orientedI FunctionalI StructuredI (Aspect oriented)

I Freedom vs. Clarity

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 34: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (1/2) 12 / 41

I Typing:I Dynamic (similar to Python, Perl)I Weak (similar to JavaScript, Python, Ruby)

I ParadigmsI ImperativeI ProceduralI Object orientedI FunctionalI StructuredI (Aspect oriented)

I Freedom vs. Clarity

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 35: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (2/2) 13 / 41

I LibrariesI PHP uses C/C++ libraries as “extensions”I Several core extensions

I StandardI ArrayI . . .

I Optional extensions shipped with the coreI Additional extensions installable via PECL [16]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 36: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (2/2) 13 / 41

I LibrariesI PHP uses C/C++ libraries as “extensions”I Several core extensions

I StandardI ArrayI . . .

I Optional extensions shipped with the coreI Additional extensions installable via PECL [16]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 37: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (2/2) 13 / 41

I LibrariesI PHP uses C/C++ libraries as “extensions”I Several core extensions

I StandardI ArrayI . . .

I Optional extensions shipped with the coreI Additional extensions installable via PECL [16]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 38: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Language properties (2/2) 13 / 41

I LibrariesI PHP uses C/C++ libraries as “extensions”I Several core extensions

I StandardI ArrayI . . .

I Optional extensions shipped with the coreI Additional extensions installable via PECL [16]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 39: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Share nothing 14 / 41

I Designed for HTTPI StatelessI Resources are freed at the end of a requestI Environment reinitilisation

I No application serverI Persistent states in shared memory

I RAMI memcache / APC / ...

I File systemsI Databases

I Threadsafe environmentI No threading in language

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 40: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Share nothing 14 / 41

I Designed for HTTPI StatelessI Resources are freed at the end of a requestI Environment reinitilisation

I No application serverI Persistent states in shared memory

I RAMI memcache / APC / ...

I File systemsI Databases

I Threadsafe environmentI No threading in language

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 41: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Share nothing 14 / 41

I Designed for HTTPI StatelessI Resources are freed at the end of a requestI Environment reinitilisation

I No application serverI Persistent states in shared memory

I RAMI memcache / APC / ...

I File systemsI Databases

I Threadsafe environmentI No threading in language

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 42: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Share nothing 14 / 41

I Designed for HTTPI StatelessI Resources are freed at the end of a requestI Environment reinitilisation

I No application serverI Persistent states in shared memory

I RAMI memcache / APC / ...

I File systemsI Databases

I Threadsafe environmentI No threading in language

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 43: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Share nothing 14 / 41

I Designed for HTTPI StatelessI Resources are freed at the end of a requestI Environment reinitilisation

I No application serverI Persistent states in shared memory

I RAMI memcache / APC / ...

I File systemsI Databases

I Threadsafe environmentI No threading in language

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 44: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Installation 15 / 41

I Normally used inside a web serverI Apache [1], Lighttpd [11], nginx, IIS, . . .I Standalone applications possible

I Interfacing through:I mod phpI FCGI (clustering)I CGI

I http://www.php.net/manual/en/install.php

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 45: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Installation 15 / 41

I Normally used inside a web serverI Apache [1], Lighttpd [11], nginx, IIS, . . .I Standalone applications possible

I Interfacing through:I mod phpI FCGI (clustering)I CGI

I http://www.php.net/manual/en/install.php

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 46: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Installation 15 / 41

I Normally used inside a web serverI Apache [1], Lighttpd [11], nginx, IIS, . . .I Standalone applications possible

I Interfacing through:I mod phpI FCGI (clustering)I CGI

I http://www.php.net/manual/en/install.php

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 47: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PEAR Installer 16 / 41

I Unified installation infrastructure for PHP [13]I Manage

I PHP code packagesI C-Extensions to PHP

I Channel supportI Provide your own code via PEAR Installer

I Application setup facilitiesI Pre- / post install scriptsI Shipped with PHP since 4.3.0

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 48: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PEAR Installer 16 / 41

I Unified installation infrastructure for PHP [13]I Manage

I PHP code packagesI C-Extensions to PHP

I Channel supportI Provide your own code via PEAR Installer

I Application setup facilitiesI Pre- / post install scriptsI Shipped with PHP since 4.3.0

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 49: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PEAR Installer 16 / 41

I Unified installation infrastructure for PHP [13]I Manage

I PHP code packagesI C-Extensions to PHP

I Channel supportI Provide your own code via PEAR Installer

I Application setup facilitiesI Pre- / post install scriptsI Shipped with PHP since 4.3.0

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 50: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PEAR Installer 16 / 41

I Unified installation infrastructure for PHP [13]I Manage

I PHP code packagesI C-Extensions to PHP

I Channel supportI Provide your own code via PEAR Installer

I Application setup facilitiesI Pre- / post install scriptsI Shipped with PHP since 4.3.0

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 51: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Documentation 17 / 41

I http://docs.php.net/(extension—function—class)I Good coverage of core functions / classesI English version very up to dateI Translations sometimes outdated

I BooksI Many many books. . .I . . . including quite some bad ones.

I MagazinesI PHP Magazin (http://it-republik.de/php/)I php—architect (http://www.phparch.com/)I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 52: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Documentation 17 / 41

I http://docs.php.net/(extension—function—class)I Good coverage of core functions / classesI English version very up to dateI Translations sometimes outdated

I BooksI Many many books. . .I . . . including quite some bad ones.

I MagazinesI PHP Magazin (http://it-republik.de/php/)I php—architect (http://www.phparch.com/)I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 53: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Documentation 17 / 41

I http://docs.php.net/(extension—function—class)I Good coverage of core functions / classesI English version very up to dateI Translations sometimes outdated

I BooksI Many many books. . .I . . . including quite some bad ones.

I MagazinesI PHP Magazin (http://it-republik.de/php/)I php—architect (http://www.phparch.com/)I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 54: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 18 / 41

Request handling

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 55: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Request handling 18 / 41

I Request data is available in superglobal arrays [28]I $ GETI $ POSTI $ COOKIEI $ FILESI ($ SERVER / $ ENV)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 56: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Request handling 18 / 41

I Request data is available in superglobal arrays [28]I $ GETI $ POSTI $ COOKIEI $ FILESI ($ SERVER / $ ENV)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 57: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Request handling 18 / 41

I Request data is available in superglobal arrays [28]I $ GETI $ POSTI $ COOKIEI $ FILESI ($ SERVER / $ ENV)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 58: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Request handling 18 / 41

I Request data is available in superglobal arrays [28]I $ GETI $ POSTI $ COOKIEI $ FILESI ($ SERVER / $ ENV)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 59: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Request handling 18 / 41

I Request data is available in superglobal arrays [28]I $ GETI $ POSTI $ COOKIEI $ FILESI ($ SERVER / $ ENV)

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 60: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Simple form 19 / 41

1 <?php2 i f ( ( i s s e t ( $ POST [ ’ submit ’ ] ) ) &&3 ( $ POST [ ’ Log in ’ ] === ’ Webtech ’ ) &&4 ( $ POST [ ’ Password ’ ] === ’ 2009 ’ ) ) {5 $ s t a t u s = ’You a r e l ogged i n now . ’ ;6 } e l s e {7 $ s t a t u s = ’ Log in f a i l e d . ’ ;8 }9 ?>

10 <?xml v e r s i o n=” 1 .0 ”?>11 <!DOCTYPE html PUBLIC ”−//W3C//DTD XHTML 1 .1 S t r i c t //EN” ” ht tp : //www.w3 . org /TR/

xhtml1 /DTD/xhtml1−s t r i c t . dtd ”>12 <html xmlns=” ht tp : //www.w3 . org /1999/ xhtml ”>13 <head><t i t l e >Simple form example</t i t l e ></head>14 <body>15 <h1>Simple form example</h1>16 <h2><?php echo h tm l s p e c i a l c h a r s ( $ s t a tu s , ENT QUOTES, ’UTF−8 ’ ) ; ?></h2>17 <form method=” pos t ”>18 <f i e l d s e t >19 <l egend>Simple l o g i n form</legend>20 < l a b e l f o r=” l o g i n ”>Username</l a b e l>21 <i n pu t type=” t e x t ” i d=” l o g i n ” name=”Log in ” />22 < l a b e l f o r=”password ”>Password</l a b e l>23 <i n pu t type=”password ” i d=”password ” name=”Password ” />24 <button type=” submit ” name=” submit ”>Login</button>25 </ f i e l d s e t >26 </form>27 </body>28 </html>

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 61: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Session handling 20 / 41

I Session data in superglobal arrayI $ SESSION

I Data stored serialized in:I File system (standard)I User extendable

I Memcache (-server)I Database

I Session-user-association:I Trans-IDI Cookie

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 62: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Session handling 20 / 41

I Session data in superglobal arrayI $ SESSION

I Data stored serialized in:I File system (standard)I User extendable

I Memcache (-server)I Database

I Session-user-association:I Trans-IDI Cookie

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 63: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Session handling 20 / 41

I Session data in superglobal arrayI $ SESSION

I Data stored serialized in:I File system (standard)I User extendable

I Memcache (-server)I Database

I Session-user-association:I Trans-IDI Cookie

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 64: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Start a session 21 / 41

1 <?php23 s e s s i o n s t a r t ( ) ;45 // Handle l o g i n6 i f ( ( i s s e t ( $ POST [ ’ submit ’ ] ) ) &&7 ( $ POST [ ’ Log in ’ ] === ’ Webtech ’ ) &&8 ( $ POST [ ’ Password ’ ] === ’ 2008 ’ ) )9 {

10 $ SESSION [ ’ l o g g e d i n ’ ] = t rue ;11 }1213 // . . .1415 // Check i f u s e r i s l ogged i n16 i f ( i s s e t ( $ SESSION [ ’ l o g g e d i n ’ ] ) &&17 ( $ SESSION [ ’ l o g g e d i n ’ ] === t rue ) )18 {19 echo ’You a r e l ogged i n . ’ ;20 }21 e l s e22 {23 echo ’You a r e not l ogged i n . ’ ;24 }2526 ?>

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 65: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 22 / 41

OOP Features

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 66: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Features 22 / 41

I ClassesI MethodsI AttributesI ConstantsI Constructor / DestructorI Scopes

I Interfaces

I Abstract classes

I Static

I Namespaces

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 67: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Features 22 / 41

I ClassesI MethodsI AttributesI ConstantsI Constructor / DestructorI Scopes

I Interfaces

I Abstract classes

I Static

I Namespaces

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 68: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Features 22 / 41

I ClassesI MethodsI AttributesI ConstantsI Constructor / DestructorI Scopes

I Interfaces

I Abstract classes

I Static

I Namespaces

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 69: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Features 22 / 41

I ClassesI MethodsI AttributesI ConstantsI Constructor / DestructorI Scopes

I Interfaces

I Abstract classes

I Static

I Namespaces

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 70: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Features 22 / 41

I ClassesI MethodsI AttributesI ConstantsI Constructor / DestructorI Scopes

I Interfaces

I Abstract classes

I Static

I Namespaces

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 71: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

OOP Example 23 / 41

1 <?php2 namespace vorgon\poe t r y ;34 c l a s s DeepThought5 {6 con s t answer = ”42” ;78 p r o t e c t e d $que s t i o n ;9

10 p u b l i c f u n c t i o n c o n s t r u c t ( )11 {12 $ t h i s−>qu e s t i o n = ”The answer to L i f e , the u n i v e r s e and e v e r y t h i n g e l s e ?

” ;13 }1415 p u b l i c f u n c t i o n g e tR e s u l t ( $ i npu t )16 {17 i f ( $ t h i s−>qu e s t i o n == $ inpu t )18 {19 r e t u r n s e l f : : answer ;20 }21 }22 }2324 ?>

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 72: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Specialities 24 / 41

I Autoloading

I Type hints

I Interceptors

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 73: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Specialities 24 / 41

I Autoloading

I Type hints

I Interceptors

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 74: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Specialities 24 / 41

I Autoloading

I Type hints

I Interceptors

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 75: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 25 / 41

Databases

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 76: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Supported databases 25 / 41

I Mysql

I Oracle

I PostgreSQL

I Sqlite

I Firebird

I MSSQL

I DB2

I CouchDB

I . . . nearly any other DBMS you can find.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 77: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PDO 26 / 41

I PDO = PHP Data Objects [26]

I Object oriented interfaceI Standardised API (kind of)

I No SQL abstractionI No automatic data persistence

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 78: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PDO 26 / 41

I PDO = PHP Data Objects [26]

I Object oriented interfaceI Standardised API (kind of)

I No SQL abstractionI No automatic data persistence

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 79: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PDO 26 / 41

I PDO = PHP Data Objects [26]

I Object oriented interfaceI Standardised API (kind of)

I No SQL abstractionI No automatic data persistence

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 80: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Database abstraction 27 / 41

I Abstraction layers written in PHP instead of CI SQL abstraction

I eZ Database [7]I PEAR MDB2 [15]

I “Active record”-like implementationsI PEAR DB DataObject [14] (PHP 4)I eZ PersistentObject [8] (PHP 5)I Zend ActiveRecord [42]I Doctrine [4]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 81: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Database abstraction 27 / 41

I Abstraction layers written in PHP instead of CI SQL abstraction

I eZ Database [7]I PEAR MDB2 [15]

I “Active record”-like implementationsI PEAR DB DataObject [14] (PHP 4)I eZ PersistentObject [8] (PHP 5)I Zend ActiveRecord [42]I Doctrine [4]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 82: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Database abstraction 27 / 41

I Abstraction layers written in PHP instead of CI SQL abstraction

I eZ Database [7]I PEAR MDB2 [15]

I “Active record”-like implementationsI PEAR DB DataObject [14] (PHP 4)I eZ PersistentObject [8] (PHP 5)I Zend ActiveRecord [42]I Doctrine [4]

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 83: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 28 / 41

Templating

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 84: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PHP is a templating language 28 / 41

I Original idea for PHPI Problems

I PHP got too powerfulI User provided templatesI No automatic output escapingI Designers don’t want to write real code

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 85: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

PHP is a templating language 28 / 41

I Original idea for PHPI Problems

I PHP got too powerfulI User provided templatesI No automatic output escapingI Designers don’t want to write real code

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 86: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Template languages 29 / 41

I Restricted functionality

I Automatic output escaping

I Simple syntaxI Highly specialized template languages written in PHP

I Smarty [39]I eZ Template [9]I PHPTAL [35]I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 87: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Template languages 29 / 41

I Restricted functionality

I Automatic output escaping

I Simple syntaxI Highly specialized template languages written in PHP

I Smarty [39]I eZ Template [9]I PHPTAL [35]I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 88: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Template languages 29 / 41

I Restricted functionality

I Automatic output escaping

I Simple syntaxI Highly specialized template languages written in PHP

I Smarty [39]I eZ Template [9]I PHPTAL [35]I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 89: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Template languages 29 / 41

I Restricted functionality

I Automatic output escaping

I Simple syntaxI Highly specialized template languages written in PHP

I Smarty [39]I eZ Template [9]I PHPTAL [35]I . . .

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 90: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 30 / 41

Security

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 91: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Is PHP an unsafe language? 30 / 41

I Security problems are not language specificI There are bugs in all language interpreters / virtual machines

I The web environment is an “easy” target

I ext/filter for general input filteringI Global prefiltering

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 92: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Is PHP an unsafe language? 30 / 41

I Security problems are not language specificI There are bugs in all language interpreters / virtual machines

I The web environment is an “easy” target

I ext/filter for general input filteringI Global prefiltering

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 93: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Is PHP an unsafe language? 30 / 41

I Security problems are not language specificI There are bugs in all language interpreters / virtual machines

I The web environment is an “easy” target

I ext/filter for general input filteringI Global prefiltering

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 94: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Is PHP an unsafe language? 30 / 41

I Security problems are not language specificI There are bugs in all language interpreters / virtual machines

I The web environment is an “easy” target

I ext/filter for general input filteringI Global prefiltering

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 95: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

What comes next? 31 / 41

Common infrastructure

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 96: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (1/2) 31 / 41

I Bytecode cachesI APC (open source) [2]I Zend Platform (commercial) [43]

I XML [29]I Different APIs, with different memory / read characteristics

I JSON [23]I Integrated

I WebservicesI XML-RPC [30]I SOAP [27]I REST

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 97: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (1/2) 31 / 41

I Bytecode cachesI APC (open source) [2]I Zend Platform (commercial) [43]

I XML [29]I Different APIs, with different memory / read characteristics

I JSON [23]I Integrated

I WebservicesI XML-RPC [30]I SOAP [27]I REST

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 98: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (1/2) 31 / 41

I Bytecode cachesI APC (open source) [2]I Zend Platform (commercial) [43]

I XML [29]I Different APIs, with different memory / read characteristics

I JSON [23]I Integrated

I WebservicesI XML-RPC [30]I SOAP [27]I REST

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 99: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (1/2) 31 / 41

I Bytecode cachesI APC (open source) [2]I Zend Platform (commercial) [43]

I XML [29]I Different APIs, with different memory / read characteristics

I JSON [23]I Integrated

I WebservicesI XML-RPC [30]I SOAP [27]I REST

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 100: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (2/2) 32 / 41

I Development toolsI IDEs (Netbeans [12], Eclipse PDT [5], . . . )I Standalone Debuggers (XDebug [41], pecl/DTrace)I Profiler (XDebug [41])

I Quality Assurance toolsI Documentation generation (phpDocumentor [33])I Build tools (phing [17])I Unit testing (PHPUnit [37])I Acceptance testing (Selenium [38])I Continuous Integration (phpUnderControl [36], Arbit [3],

Hudson [10])I Static code analysis tools (phpCodeSniffer [31], pDepend [21],

phploc [34], phpcpd [32], . . . )

I (Rails like) Frameworks

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 101: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (2/2) 32 / 41

I Development toolsI IDEs (Netbeans [12], Eclipse PDT [5], . . . )I Standalone Debuggers (XDebug [41], pecl/DTrace)I Profiler (XDebug [41])

I Quality Assurance toolsI Documentation generation (phpDocumentor [33])I Build tools (phing [17])I Unit testing (PHPUnit [37])I Acceptance testing (Selenium [38])I Continuous Integration (phpUnderControl [36], Arbit [3],

Hudson [10])I Static code analysis tools (phpCodeSniffer [31], pDepend [21],

phploc [34], phpcpd [32], . . . )

I (Rails like) Frameworks

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 102: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Related technology (2/2) 32 / 41

I Development toolsI IDEs (Netbeans [12], Eclipse PDT [5], . . . )I Standalone Debuggers (XDebug [41], pecl/DTrace)I Profiler (XDebug [41])

I Quality Assurance toolsI Documentation generation (phpDocumentor [33])I Build tools (phing [17])I Unit testing (PHPUnit [37])I Acceptance testing (Selenium [38])I Continuous Integration (phpUnderControl [36], Arbit [3],

Hudson [10])I Static code analysis tools (phpCodeSniffer [31], pDepend [21],

phploc [34], phpcpd [32], . . . )

I (Rails like) Frameworks

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 103: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Conclusion 33 / 41

I PHP is easy and fast to hackI Beginners might publish (unsecure) appsI C-like syntax

I Object orientationI Re-usable componentsI Good web architecture still not easyI PHP gives you freedom

I PHP scalesI Development wiseI Performance wiseI Customer wise

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 104: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Conclusion 33 / 41

I PHP is easy and fast to hackI Beginners might publish (unsecure) appsI C-like syntax

I Object orientationI Re-usable componentsI Good web architecture still not easyI PHP gives you freedom

I PHP scalesI Development wiseI Performance wiseI Customer wise

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 105: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Conclusion 33 / 41

I PHP is easy and fast to hackI Beginners might publish (unsecure) appsI C-like syntax

I Object orientationI Re-usable componentsI Good web architecture still not easyI PHP gives you freedom

I PHP scalesI Development wiseI Performance wiseI Customer wise

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 106: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

Thank you for listening 34 / 41

I Any questions?I Kore Nordmann <[email protected]> / @korednI Tobias Schlitt <[email protected]> / @tobySenI Jakob Westhoff <[email protected]> / @jakobwesthoff

I We hope you enjoyed the session

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 107: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References I 35 / 41

[1] Apache Webserver.http://httpd.apache.org/.

[2] APC.http://pecl.php.net/APC.

[3] Arbit.http://arbitracker.org/.

[4] Doctrine.http://www.doctrine-project.org/.

[5] Eclipse PDT.http://www.eclipse.org/pdt/.

[6] eZ Components.http://ezcomponents.org.

[7] eZ Components Database.http://ezcomponents.org/s/Database.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 108: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References II 36 / 41

[8] eZ Components PersistentObject.http://ezcomponents.org/s/PersistentObject.

[9] eZ Components Template.http://ezcomponents.org/s/Template.

[10] Hudson.https://hudson.dev.java.net/.

[11] Lighttpd Webserver.http://www.lighttpd.net/.

[12] Netbeans IDE.http://netbeans.org/.

[13] PEAR - PHP Extension and Application Repository.http://pear.php.net.

[14] PEAR DB DataObject.http://pear.php.net/DB_DataObject.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 109: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References III 37 / 41

[15] PEAR MDB2.http://pear.php.net/MDB2.

[16] PECL - PHP Extension Code Library.http://pecl.php.net.

[17] Phing.http://phing.info/trac/.

[18] PHP.http://php.net.

[19] PHP Closures / lambda functions.http://php.net/manual/en/functions.anonymous.php.

[20] PHP Command Line Interface.http://php.net/cli.

[21] PHP Depend.http://pdepend.org/.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 110: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References IV 38 / 41

[22] PHP-GTK.http://gtk.php.net/.

[23] PHP JSON.http://php.net/json.

[24] PHP Late Static Binding.http:

//php.net/manual/en/language.oop5.late-static-bindings.php.

[25] PHP Namespaces.http://php.net/namespaces.

[26] PHP PDO.http://php.net/pdo.

[27] PHP SOAP.http://php.net/soap.

[28] PHP Superglobals.http://php.net/manual/en/language.variables.superglobals.php.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 111: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References V 39 / 41

[29] PHP XML APIs.http://php.net/manual/en/refs.xml.php.

[30] PHP XML-RPC.http://php.net/xmlrpc.

[31] phpCodeSniffer.http://pear.php.net/PHP_CodeSniffer.

[32] phpcpd.http://github.com/sebastianbergmann/phpcpd/.

[33] phpDocumentor.http://www.phpdoc.org/.

[34] phploc.http://github.com/sebastianbergmann/phploc.

[35] PHPTAL.http://phptal.org/.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 112: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References VI 40 / 41

[36] phpUnderControl.http://phpundercontrol.org/.

[37] PHPUnit.http://www.phpunit.de.

[38] Selenium.http://seleniumhq.org/.

[39] Smarty.http://www.smarty.net/.

[40] TIOBE Programming Community Index.http:

//www.tiobe.com/index.php/content/paperinfo/tpci/index.html.

[41] Xdebug.http://xdebug.org.

[42] Zend Framework Database.http://framework.zend.com/manual/en/zend.db.html.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>

Page 113: Web development with PHP - Kore Nordmann · Speaker 2 / 41 I The speakers I Kore Nordmann  I Tobias Schlitt  I Jakob Westho

References VII 41 / 41

[43] Zend Platform.http://www.zend.com/products/platform/.

http://kore-nordmann.de/portfolio.html

Kore Nordmann <[email protected]>