PHP-presentation Dataföreningens Open Source-nätverk Netera AB Jimmy Furland jimmy@netera.se Björn Hansson hansson@netera.se
Introduktion HTML-inbäddat webbprogrammeringsspråk Står för PHP Hypertext Preprocessor Ingår i de-facto standarden LAMP (Linux, Apache, MySQL, PHP) Utvecklades från början av Rasmus Lerdorf och var då en samling Perlskript C-liknande syntax
PHP milstolpar 1995 - PHP/FI 1.0 Nov 97 - PHP/FI 2.0 PHP 3.0 - Jun 1998 PHP 4.0 Beta 1 - Jul 1999 PHP 4.0 - May 2000 PHP 4.1 - Dec 2001 PHP 4.2 - Apr 2002 PHP 4.3 - Dec 2002 Feb, 2003 - PHP 4.3.1 May, 2003 - PHP 4.3.2 Aug 2003 - PHP 4.3.3 Nov 2003 - PHP 4.3.4 Feb 2004 - PHP 4.3.5 RC 3 Jun 2003 - PHP 5 Beta 1 Feb 2003 - PHP 5 Beta 4 April 2004 PHP 5 RC 2
PHP-användning PHP: 15,528,732 domäner, 1,343,899 Ip-adresser Källa: Netcraft
PHP är standard för all nyutveckling på Yahoo. Över 2 miljarder sidvisningar per dag. E-ticketsystem byggt i PHP. Bokning, check-in osv. 6 miljoner sidvisningar per dag.
Serverside scriptspråk PHP körs på servern innan information skickas till webbläsaren. Som ASP, Perl, Java servlets Inte som JavaScript, CSS, HTML
PHP-taggar Standard <?php [code]?> Kort version - <? [code]?> ASP-liknande - <% [code] %> Lång - <script language= PHP > [code] </script>
<html> <?php echo "Hello World"?> </html> <html> Hello World </html>
Lätt att använda <?php $handle = fopen("/home/www/file.txt", "r"); $handle = fopen("/home/www/file.gif", "wb"); $handle = fopen("http://www.example.com/", "r"); $handle = fopen("ftp://user:password@example.com/somefile.txt", "w");?>
Anslutning till MySQL-databas <?php $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('could not connect: '. mysql_error()); } $query = mysql_query( SELECT name FROM persons, $link); while($person = mysql_fetch_assoc($query)) { print( $person[name]\n ); }?>
Skapa bild $im = imagecreate(100, 30); // white background and blue text $bg = imagecolorallocate($im, 255, 255, 255); $textcolor = imagecolorallocate($im, 0, 0, 255); // write the string at the top left imagestring($im, 5, 0, 0, "Hello world!", $textcolor); // output the image header("content-type: image/jpg"); imagejpeg($im);
Fördelar Finns till ett flertal operativsystem och webbservrar Distribueras som öppen källkod Mycket stor funktionalitet Över 2000 inbyggda funktioner Mycket enkelt att lära sig
Lätt att integera med MySQL / PostgreSQL / MS SQL (även ODBC) PDF Skapa bilder, libgd Flash Klienter och servrar som använder TCP/IP Finns ett flertal färdiga templatemotorer Mycket mer
PHP Accelerators Lättaste sättet att höja prestandan Kräver inga kodförändringar Flera valmöjligheter ioncube Zend Performance Suite APC (bättre som profiler)
PHP-GTK Tillägg för att bygga GUI-klienter i PHP Fungerar på de flesta grafiska OS med PHP installerat. Kan användas för att bygga CMS-system, tidrapportering, administration, statistik m.m.
PHP5 Zend engine 2 Objektorientering SQLite Förbättrat XML-stöd
Objektorientering, Zend engine 2 Helt omskriven objektorientering Ger bättre prestanda och ny funktionalitet Inte bakåtkompatibel med PHP4 Samma typ av arv, inkapsling, metoder och konstruktorer som i t.ex. C++
Klasser Class user { public name; public birthday; public function construct($name, $birthday) { $this->name = $name; $this->birthday = $birthday; } } public function hello() { return Hello $this->name!\n ; } public function age() { $ts = strtotime($this->birthday); If($ts == -1) { return Unknown ; } else { $diff = time() - $ts; return floor($diff / (24*60*60*365)); } }
Klasser Användningsexempel på föregående klass $user = new User( Erik, 10 Nov 1972 ); echo $user->hello(); echo Du är. $user->age(). år gammal.\n ;
Klasser arv och inkapsling Funktioner kan deklareras som public, protected eller private. Anger var i koden funktionen kan anropas Klasser kan ärva egenskapar från andra klasser. Class AdminUser extends User
Undantag / felhantering PHP4 har ingen undantagshantering PHP5 innehåller undantagsmodell som liknar den i andra språk, t.ex. C++ Try{} och catch{}
SQLite Inbyggd databashanterare Arbetar direkt mot filer Enkel kräver ingen egen databashanterare Stöder transaktioner Optimerad för SELECT, minst lika snabb som MySQL. Generellt sett långsammare än MySQL på INSERT, UPDATE, DELETE Väldigt fri licens (public domain) http://www.sqlite.org/
SimpleXML Mycket mindre kod för att hantera XML <?xml version="1.0"?> <library> <shelf id="fiction"> <book> <title>of Mice and Men</title> <author>john Steinbeck</author> </book> <book> <title>harry Potter and the Philosopher's Stone</title> <author>j.k. Rowling</author> </book> </shelf> </library>
SimpleXML Minst 50 rader kod med PHP4, som använde DOMXML. Koden nedan löser samma problem med XMLite. <?php $library = simplexml_load_file('library.xml'); foreach ($library->shelf as $shelf) { }?> printf("shelf %s\n", $shelf['id']); foreach ($shelf->book as $book) { } printf("title: %s\n", $book->title); printf("author: %s\n", $book->author);
PEAR PHP Extension and Application Repository Ramverk för distribution av återanvändbar PHPkod. Tusentals färdiga paket som löser olika problem. Vanligaste ingår i PHP, andra hämtas på http://pear.php.net
http://www.netera.se/dfs/php.pdf