Developing Web Applications with PHP RAD for the World Wide Web Jeff Jirsa [email protected] Agenda – – – – – – – – Introduction PHP Language Basics Built-in Functions PHP on Linux and Windows Tricks and Tips PHP 5 Examples Questions? Introduction • What is PHP? – PHP stands for "PHP Hypertext Preprocessor” – An embedded scripting language for HTML like ASP or JSP – A language that combines elements of Perl, C, and Java Introduction • History of PHP – Created by Rasmus Lerdorf in 1995 for tracking access to his resume – Originally a set of Perl scripts known as the “Personal Home Page” tools – Rewritten in C with database functionality – Added a forms interpreter and released as PHP/FI: includes Perl-like variables, and HTML embedded syntax Introduction • History of PHP (cont.) – Rewritten again in and released as version 2.0 in November of 1997 – Estimated user base in 1997 is several thousand users and 50,000 web sites served – Rewritten again in late 1997 by Andi Gutmans and Zeev Suraski – More functionality added, database support, protocols and APIs Introduction • History of PHP (cont.) – User base in 1998 estimated 10,000 users and 100,000 web sites installed – Version 3.0 was released in June 1998 as PHP – Estimated user base in tens of thousands and hundreds of thousands of web sites served Introduction • History of PHP (cont.) – Rewritten again in 1997 by Andi Gutmans and Zeev Suraski – More functionality added (OOP features), database support, protocols and APIs – PHP 3.0 is released in June 1998 with some OO capability – The core is rewritten in 1998 for improved performance of complex applications Introduction • History of PHP (cont.) – The core is rewritten in 1998 by Zeev and Andi and dubbed the “Zend Engine” – The engine is introduced in mid 1999 and is released with version 4.0 in May of 2000 – The estimated user base is hundreds of thousands of developers and several million of web sites served Introduction • History of PHP (cont.) – Version 5.0 will include version 2.0 of the Zend Engine • New object model is more powerful and intuitive • Objects will no longer be passed by value; they now will be passed by reference • Increases performance and makes OOP more attractive Introduction • Netcraft Statistics – 11,869,645 Domains, 1,316,288 IP Addresses Introduction • Performance* – Zdnet Statistics • PHP pumped out about 47 pages/second • Microsoft ASP pumped out about 43 pages/second • Allaire ColdFusion pumped out about 29 pages/second • Sun Java JSP pumped out about 13 pages/second * From PHP HOWTO, July 2001 PHP Language Basics • The Script Tags – All PHP code is contained in one of several script tags: • <? // Some code ?> • <?php // Some code here ?> PHP Language Basics • The Script Tags (cont.) • <script language=“PHP"> // Some code here </script> – ASP-style tags • Introduced in 3.0; may be removed in the future • <% // Some code here %> PHP Language Basics • The Script Tags (cont.) – “Echo” Tags – <table> <tr> <td>Name:</td><td><?= $name ?></td> </tr> <tr> <td>Address:</td><td><?= $address ?></td> </tr> </table> PHP Language Basics • Hello World!: An Example – Like Perl, there is more than one way to do it • <?php echo “Hello World!”; ?> • <?php $greeting = “Hello World!” printf(“%s”, $greeting); php?> PHP Language Basics • Hello World!: An Example (cont.) • <script language=“PHP”> $hello = “Hello”; $world = “World!”; print $hello . $world </script> PHP Language Basics • Constants, Data Types and Variables – Constants define a string or numeric value – Constants do not begin with a dollar sign – Examples: • • • • define(“COMPANY”, “Acme Enterprises”); define(“YELLOW”, “#FFFF00”); define(“PI”, 3.14); define(“NL”, “<br>\n”); PHP Language Basics • Constants, Data Types and Variables – Using a constant • print(“Company name: “ . COMPANY . NL); PHP Language Basics • Constants, Data Types and Variables – Data types • Integers, doubles and strings – – – – – isValid = true; 25 3.14 ‘Four’ “Total value” // Boolean // Integer // Double // String // Another string PHP Language Basics • Constants, Data Types and Variables – Data types • Strings and type conversion – $street = 123; – $street = $street . “ Main Street”; – $city = ‘Naperville’; $state = ‘IL’; – $address = $street; – $address = $address . NL . “$city, $state”; – $number = $address + 1; // $number equals 124 PHP Language Basics • Constants, Data Types and Variables – Data types • Arrays – Perl-like syntax • $arr = array("foo" => "bar", 12 => true); – same as • $arr[“foo”] = “bar”; • $arr[12] = true; PHP Language Basics • Constants, Data Types and Variables • Arrays (cont.) – <?php $arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42)); echo $arr["somearray"][6]; // 5 echo $arr["somearray"][13]; // 9 echo $arr["somearray"]["a"]; // 42 ?> PHP Language Basics • Constants, Data Types and Variables – Objects – Currently not much more advanced than than associative arrays Using constants – Before version 5.0, objects are passed by value • Slow • Functions can not easily change object variables PHP Language Basics • Constants, Data Types and Variables – Operators – Contains all of the operators like in C and Perl (even the ternary) – Statements – – – – if, if/elseif Switch/case for, while, and do/while loops Include and require statements for code reuse Built-in Functions • What comes In the box? – Array Manipulator Functions • sort, merge, push, pop, slice, splice, keys, count – CCVS: Interface to Red Hat’s credit system – COM functions: Interface to Windows COM objects – Date and Time Functions • getdate, mkdate, date, gettimeofday, localtime, strtotime, time Built-in Functions • What comes In the box? – Directory Functions • Platform independent – Error Handling Functions • Recover from warnings and errors – Filesystem Functions • Access flat files • Check directory, link, and file status information • Copy, delete, and rename files Built-in Functions • What comes In the box? – IMAP Functions • Manipulate mail boxes via the IMAP protocol – LDAP Functions • Works with most LDAP servers – Mail Functions • mail($recipient, $subject, $message) Built-in Functions • What comes In the box? – Database Functions • • • • • • • dba: dbm-style abstraction layer dBase Frontbase Informix Ingres II Interbase mSQL Built-in Functions • What comes In the box? – Database Functions (cont.) • • • • MySQL Oracle PostgreSQL SQL Server – MING • Macromedia Flash – PDF • Create/manipulate PDF files dynamically Built-in Functions • What comes In the box? – POSIX Functions • Manipulate process information – Regular Expression Functions • Uses POSIX regex – Semaphore and Socket Functions • Available only on Unix – Session Management Functions PHP on Linux and Windows • Code Portability – The obvious: don’t use Unix or Windows specific functions – Create a reusable module for file system differences, for example: – if( PHP_OS == "Linux" ) { $ConfigPath = "/var/www/conf"; $DataPath = "/var/www/data"; } PHP on Linux and Windows • Code Portability – if( ereg("WIN", PHP_OS) ) { $ApachePath = “C:/Program Files/Apache Group/Apache”; $ConfigPath = ”$ApachePath/htdocs/conf"; $DataPath = "$ApachePath/htdocs/data"; } $ConfigFile $CountryList $StateAbbrList $StateNameList = "$ConfigPath/paperwork.conf"; = "$DataPath/countries.txt"; = "$DataPath/usstateabbrs.txt"; = "$DataPath/usstatenames.txt"; Tricks and Tips • Coding – Prototype your web pages first • Separate the design of the site from the coding – Turn repetitive code into functions • Makes for more maintainable and reusable code – Turn grunt code into functions • Database access, configuration file access Tricks and Tips • Debugging – Feature: PHP is not a strongly typed language • Variables can be created anywhere in your code – Undocumented Feature: PHP is not a strongly typed language • Typos in variable names will cause stuff to happen Tricks and Tips • Debugging – Use scripts to dump form and session variables • Write scripts to dump data to discover bad or missing data Tricks and Tips • Development Tools – Color coding editors • vim, Emacs, Visual SlickEdit – IDEs • Windows – Macromedia Dreamweaver – Allaire Homesite – Zend’s PHPEdit • Linux – ??? PHP 5 • Release Date – ??? • Features – Complete objects • • • • • • Objects with constructors Abstract classes Private, protected and abstract functions Private, protected and constant variables Namespaces Exception handling with try/catch blocks Resources • PHP Downloads and Online Documentation – www.php.net • Community – www.phpbuilder.com: articles on PHP, discussion forums – www.phpresourceindex.com: over 1,000 PHP scripts – www.phpvolcano.com: PHP 5 information • Newsgroups – comp.lang.php Questions? – Any Questions • www.php.net – Community • www.phpbuilder.com: articles on PHP, discussion forums – Newsgroups • comp.lang.php
© Copyright 2024 ExpyDoc