390 likes | 564 Views
Developing Web Applications with PHP. RAD for the World Wide Web Jeff Jirsa jjirsa@xnet.com. Agenda. Introduction PHP Language Basics Built-in Functions PHP on Linux and Windows Tricks and Tips PHP 5 Examples Questions?. Introduction. What is PHP?
E N D
Developing Web Applications with PHP RAD for the World Wide Web Jeff Jirsa jjirsa@xnet.com
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; // Boolean • 25 // Integer • 3.14 // Double • ‘Four’ // String • “Total value” // 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 = "$ConfigPath/paperwork.conf";$CountryList = "$DataPath/countries.txt";$StateAbbrList = "$DataPath/usstateabbrs.txt";$StateNameList = "$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