php 5 sucks! php 5 rocks! adam trachtenberg ebay technical evangelist [email protected]
TRANSCRIPT
![Page 2: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/2.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
In the Beginning...
1. SOAP Sucks! SOAP Rocks!• Conclusion: SOAP Sucks and Rocks!
2. mod_perl 2.0 Sucks! mod_perl 2.0 Rocks!• Conclusion: mod_perl 2.0 Sucks!
3. PHP 5 Sucks! PHP 5 Rocks!• Conclusion: ???
![Page 3: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/3.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
There and Back Again
• I decide I should stop “learning” PHP 5 via the mailing list and start actually programming in it.
• The lies begin– “I’m a pretty good PHP 4 programmer”
– “I’ve already switched from 2 to 3, and 3 to 4, so I know how to migrate versions”
– “Besides, documentation is for wimps.”
• So, PHP 5 shouldn’t be too difficult to learn.
• Right?
![Page 4: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/4.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Come Up With a Plan
1. Install PHP 5
2. ???????
3. $$$Profit!!!
![Page 5: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/5.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 1. Install PHP 5
1. Check out latest version from CVS
2. Run ./buildconf
3. Copy over my PHP 4 config.nice file
4. Run ./config.nice
![Page 6: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/6.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 1. Install PHP 5: config.nice
#! /bin/sh
#
# Created by configure
'./configure' \
'--prefix=/home/adam' \
'--with-zlib' \
'--with-dom=/home/adam/' \
"$@"
![Page 7: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/7.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 1. Install PHP 5: config.nice
$ ./config.nice
...
Configuring extensions
checking whether to enable LIBXML support... yes
checking libxml2 install dir... no
configure: error: xml2-config not found. Please check your libxml2 installation.
![Page 8: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/8.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 1. Install PHP 5: config.nice
$ ./config.nice --with-libxml-dir=/home/adam
...
Thank you for using PHP.
![Page 9: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/9.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. ???????
• Maybe I should run some PHP 4 scripts and see how they work under PHP 5
• Let’s start with a simple DOMXML program
![Page 10: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/10.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
<?xml version="1.0"?><talk> <title>PHP 5 Rocks!</title></talk>
![Page 11: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/11.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = domxml_new_doc('1.0');
// create and append the root element, <talk>$talk = $dom->append_child($dom-> create_element('talk'));
// create and append <title> to $talk$title = $talk->append_child($dom-> create_element('title'));
// set the text node for $title$title->append_child($dom-> create_text_node('PHP 5 Rocks!'));
// print DOM document as XMLecho $dom->dump_mem(true);
![Page 12: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/12.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
Fatal error: Call to undefined function domxml_new_doc() in /home/adam/php5/dom.xml on line 2
![Page 13: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/13.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->append_child($dom-> create_element('talk'));
// create and append <title> to $talk$title = $talk->append_child($dom-> create_element('title'));
// set the text node for $title$title->append_child($dom-> create_text_node('PHP 5 Rocks!'));
// print DOM document as XMLecho $dom->dump_mem(true);
![Page 14: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/14.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
Fatal error: Call to undefined method DOMDocument::append_child() in /home/adam/php5/dom.xml on line 5
![Page 15: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/15.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->appendChild($dom-> createElement('talk'));
// create and append <title> to $talk$title = $talk->appendChild($dom-> createElement('title'));
// set the text node for $title$title->appendChild($dom-> createTextNode('PHP 5 Rocks!'));
// print DOM document as XMLecho $dom->dumpMem(true);
![Page 16: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/16.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
Fatal error: Call to undefined method DOMDocument::dumpMem() in /home/adam/php5/dom.xml on line 17
![Page 17: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/17.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->appendChild($dom-> createElement('talk'));
// create and append <title> to $talk$title = $talk->appendChild($dom-> createElement('title'));
// set the text node for $title$title->appendChild($dom-> createTextNode('PHP 5 Rocks!'));
// print DOM document as XMLecho $dom->saveXML();
![Page 18: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/18.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
<?xml version="1.0"?><talk><title>PHP 5 Rocks!</title></talk>
![Page 19: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/19.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
<?xml version="1.0"?><talk> <title>PHP 5 Rocks!</title></talk>
![Page 20: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/20.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->appendChild($dom-> createElement('talk'));
// create and append <title> to $talk$title = $talk->appendChild($dom-> createElement('title'));
// set the text node for $title$title->appendChild($dom-> createTextNode('PHP 5 Rocks!'));
// print DOM document as XML$dom->formatOutput = true;echo $dom->saveXML();
![Page 21: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/21.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
<?xml version="1.0"?><talk> <title>PHP 5 Rocks!</title></talk>
![Page 22: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/22.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->appendChild ($dom-> createElement ('talk'));
// create and append <title> to $talk$title = $talk->appendChild ($dom-> createElement ('title'));
// set the text node for $title$title->appendChild ($dom-> createTextNode ('PHP 5 Rocks!'));
// print DOM document as XML$dom->formatOutput = true;echo $dom->saveXML();
![Page 23: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/23.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
Warning
This extension is EXPERIMENTAL. The behaviour of this
extension -- including the names of its functions and anything
else documented about this extension -- may change without
notice in a future release of PHP. Use this extension at your
own risk.
![Page 24: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/24.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
1. DOM objects are now actually objects• Easy to integrate within OOP• Subclass them to define your own methods
2. DOM methods now use studlyCaps• Just like the rest of the world
3. DOM behaves like the specification• Properties are actually properties instead of
methods
![Page 25: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/25.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$dom = new DOMDocument('1.0');
// create and append the root element, <talk>$talk = $dom->appendChild( new DOMElement('talk'));
// create and append <title> to $talk$title = $talk->appendChild( new DOMElement('title'));
// set the text node for $title$title->appendChild( new DOMText('PHP 5 Rocks!'));
// print DOM document as XMLecho $dom->saveXML();
![Page 26: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/26.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
4. Faster than before5. Doesn’t leak memory6. Supports more DOM features7. Plays well with other XML extensions,
like XSLT, XPath, and SimpleXML
![Page 27: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/27.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$talk = '<talk>
<title>PHP 5 Rocks!</title></talk>';
$dom = new DOMDocument;$dom->preserveWhiteSpace = false;$dom->loadXML($talk);
// print out "PHP 5 Rocks!“print $dom->firstChild->firstChild->
firstChild->nodeValue;
PHP 5 Rocks!
![Page 28: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/28.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
$talk = '<talk>
<title>PHP 5 Rocks!</title></talk>';
$simplexml = simplexml_load_string($talk);
// print out "PHP 5 Rocks!"print $simplexml->title;
PHP 5 Rocks!
![Page 29: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/29.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. DOM
• DOM Sucks!• SimpleXML Rocks!
![Page 30: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/30.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. ???????
• Maybe I should run some PHP 4 scripts and see how they work under PHP 5
• Let’s start with a simple DOMXML program
• Well, that didn’t go as smoothly as I thought, but I can always rely on MySQL
• After all MySQL and PHP put the MP in LAMP
• This will definitely work!
• Right?
![Page 31: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/31.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = mysql_connect($server, $user, $password);
mysql_select_db("users");
$r = mysql_query("SELECT user FROM users");
while ($row = mysql_fetch_assoc($r)) {
print $row['user'];
}
mysql_close();
![Page 32: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/32.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
Fatal error: Call to undefined function mysql_connect() in /home/adam/php5/mysql.php on line 3
![Page 33: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/33.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
• MySQL client libraries are no longer bundled with PHP!
• You must download and install them yourselves.
![Page 34: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/34.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
• While I’m at it, I might as well upgrade to MySQL 4.1.
![Page 35: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/35.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
• However, MySQL 4.1 uses a new client protocol...
• Turns out, there’s a new MySQL extension dedicated to MySQL 4.1 and greater
• MySQLi
• The “i” stands for improved
![Page 36: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/36.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = mysql_connect($server, $user, $password);
mysql_select_db("users");
$r = mysql_query("SELECT user FROM users");
while ($row = mysql_fetch_assoc($r)) {
print $row['user'];
}
mysql_close();
![Page 37: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/37.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = mysqli_connect($server, $user, $password);
mysqli_select_db("users");
$r = mysqli_query("SELECT user FROM users");
while ($row = mysqli_fetch_assoc($r)) {
print $row['user'];
}
mysqli_close();
![Page 38: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/38.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
Warning: Missing argument 2 for mysqli_select_db() in /home/adam/php5/mysql.php on line 7
![Page 39: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/39.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = mysqli_connect($server, $user, $password);
mysqli_select_db($db, "users");
$r = mysqli_query($db, "SELECT user FROM users");
while ($row = mysqli_fetch_assoc($r)) {
print $row['user'];
}
mysqli_close($db);
![Page 40: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/40.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = mysqli_connect($server, $user, $password, "users");
$r = mysqli_query("SELECT user FROM users");
while ($row = mysqli_fetch_assoc($r)) {
print $row['user'];
}
mysqli_close();
![Page 41: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/41.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
• You now need to always pass a database handle to MySQL functions
• Also, some older functions have been removed
• So, I compiled a list of functions that have been changed or deleted between the MySQL and MySQLi extension
![Page 42: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/42.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2: MySQL• mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string pa\ssword [,
bool new [, int flags]]]]])• mysql_select_db(string database_name [, int link_identifier])• mysql_query(string query [, int link_identifier])• mysql_fetch_field(resource result [, int field_offset])• mysql_change_user(string user, string password [, string database [, resource link_identifier]])• mysql_real_escape_string(string to_be_escaped [, int link_identifier])• mysql_affected_rows([int link_identifier])• mysql_close([int link_identifier])• mysql_error([int link_identifier])• mysql_errno([int link_identifier])• mysql_get_host_info([int link_identifier])• mysql_get_proto_info([int link_identifier])• mysql_get_server_info([int link_identifier])• mysql_info([int link_identifier])• mysql_insert_id([int link_identifier])• mysql_ping([int link_identifier])• mysql_stat([int link_identifier])• mysql_thread_id([int link_identifier])• mysql_create_db($database, $db);• mysql_drop_db($database, $db);• mysql_escape_string($string);• mysql_field_flags($result, $i);• mysql_field_len($result, $i)• mysql_field_name($result, $i)• mysql_field_table($result, $i)• mysql_field_type($result, $i)• mysql_db_name($result, $i)• mysql_db_query($database, $query, $db);• mysql_list_dbs($db);• mysql_list_fields($database, $table, $db)• mysql_list_processes($db)• mysql_list_tables($database, $db)• mysql_pconnect($hostname, $username, $password);• mysql_result($result, $column);• mysql_tablename($result, $i)• mysql_unbuffered_query()
![Page 43: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/43.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
• Object-oriented interface
• Prepared statements
• Bound input and output parameters
• SSL connections
• Multi-query function
• Subselects
• Internationalization
• Whole lots more!
• This rocks!
![Page 44: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/44.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = new mysqli($server, $user, $password, "users");
$r = mysqli->query("SELECT user FROM users");
while ($row = $r->fetch_assoc()) {
print $row['user'];
}
unset($db);
![Page 45: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/45.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 2. MySQL
$db = new mysqli($server, $username, $password, "users");
$stmt = $db->stmt_init();
if ($stmt->prepare("SELECT user FROM users")) {
$stmt->bind_result($user);
$stmt->execute();
while ($stmt->fetch()) {
print $user;
}
}
unset($db);
![Page 46: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/46.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 3. $$$Profit!!!
• The good news is that I’ve shown you (almost) all the sucky parts of PHP 5.
• Everything else rocks!
![Page 47: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/47.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 3. $$$Profit!!!
1. Object-oriented programming• Constructors
• Destructors
• Public, protected, and private properties and methods
• Interfaces
• Abstract classes
• Class type hints
• Static properties and methods
• Final properties and methods
• A whole suite of magical methods
• Proper references
![Page 48: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/48.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 3. $$$Profit!!!
1. Object-oriented programming
2. XML• DOM
• SimpleXML
• XSLT
• XPath
• SAX
• XML Pull Parser
![Page 49: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/49.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 3. $$$Profit!!!
1. Object-oriented programming
2. XML
3. SQLite• Embedded database library
• Guarantees access to database in PHP 5
• Not “Lite” at all:• Transactions
• Triggers
• Subselects
![Page 50: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/50.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
Step 3. $$$Profit!!!
1. Object-oriented programming
2. XML
3. SQLite
4. Iterators
5. Error handling with exceptions
6. SOAP extension
7. Streams, wrappers, and filters
8. Reflection classes
9. Better command line processing
10. Compliant HTML from Tidy
![Page 51: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/51.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
In the Beginning...
1. SOAP Sucks! SOAP Rocks!• Conclusion: SOAP Sucks and Rocks!
2. mod_perl 2.0 Sucks! mod_perl 2.0 Rocks!• Conclusion: mod_perl 2.0 Sucks!
3. PHP 5 Sucks! PHP 5 Rocks!• Conclusion: PHP 5 Rocks!
![Page 52: PHP 5 Sucks! PHP 5 Rocks! Adam Trachtenberg eBay Technical Evangelist amt@php.net](https://reader038.vdocuments.site/reader038/viewer/2022110211/56649eda5503460f94bea1b4/html5/thumbnails/52.jpg)
Why PHP 5 Sucks! Why PHP 5 Rocks!Adam Trachtenberg: eBay Evangelist
$$$Profit!!!
ShamelessPlug