Developing Web Applications with PHP - UniForum Chicago
Transcript of Developing Web Applications with PHP - UniForum Chicago
![Page 1: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/1.jpg)
Developing Web Developing Web Applications with PHPApplications with PHP
RAD for the World Wide Web
Jeff Jirsa [email protected]
![Page 2: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/2.jpg)
AgendaAgenda
– Introduction– PHP Language Basics– Built-in Functions– PHP on Linux and Windows– Tricks and Tips– PHP 5– Examples– Questions?
![Page 3: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/3.jpg)
IntroductionIntroduction
• 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
![Page 4: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/4.jpg)
IntroductionIntroduction
• 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
![Page 5: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/5.jpg)
IntroductionIntroduction
• 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
![Page 6: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/6.jpg)
IntroductionIntroduction
• 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
![Page 7: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/7.jpg)
IntroductionIntroduction
• 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
![Page 8: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/8.jpg)
IntroductionIntroduction
• 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
![Page 9: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/9.jpg)
IntroductionIntroduction
• 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
![Page 10: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/10.jpg)
IntroductionIntroduction• Netcraft Statistics
– 11,869,645 Domains, 1,316,288 IP Addresses
![Page 11: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/11.jpg)
IntroductionIntroduction
• 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
![Page 12: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/12.jpg)
PHP Language BasicsPHP Language Basics
• The Script Tags– All PHP code is contained in one of several
script tags:• <?
// Some code?>
• <?php// Some code here?>
![Page 13: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/13.jpg)
PHP Language BasicsPHP 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%>
![Page 14: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/14.jpg)
PHP Language BasicsPHP 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>
![Page 15: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/15.jpg)
PHP Language BasicsPHP 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?>
![Page 16: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/16.jpg)
PHP Language BasicsPHP Language Basics
• Hello World!: An Example (cont.)• <script language=“PHP”>
$hello = “Hello”; $world = “World!”; print $hello . $world</script>
![Page 17: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/17.jpg)
PHP Language BasicsPHP 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”);
![Page 18: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/18.jpg)
PHP Language BasicsPHP Language Basics
• Constants, Data Types and Variables– Using a constant
• print(“Company name: “ . COMPANY . NL);
![Page 19: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/19.jpg)
PHP Language BasicsPHP 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
![Page 20: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/20.jpg)
PHP Language BasicsPHP 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
![Page 21: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/21.jpg)
PHP Language BasicsPHP 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;
![Page 22: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/22.jpg)
PHP Language BasicsPHP 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?>
![Page 23: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/23.jpg)
PHP Language BasicsPHP 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
![Page 24: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/24.jpg)
PHP Language BasicsPHP 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
![Page 25: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/25.jpg)
Built-in FunctionsBuilt-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
![Page 26: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/26.jpg)
Built-in FunctionsBuilt-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
![Page 27: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/27.jpg)
Built-in FunctionsBuilt-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)
![Page 28: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/28.jpg)
Built-in FunctionsBuilt-in Functions
• What comes In the box?– Database Functions
• dba: dbm-style abstraction layer• dBase• Frontbase• Informix• Ingres II• Interbase• mSQL
![Page 29: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/29.jpg)
Built-in FunctionsBuilt-in Functions
• What comes In the box?– Database Functions (cont.)
• MySQL• Oracle• PostgreSQL• SQL Server
– MING• Macromedia Flash
– PDF• Create/manipulate PDF files dynamically
![Page 30: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/30.jpg)
Built-in FunctionsBuilt-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
![Page 31: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/31.jpg)
PHP on Linux and WindowsPHP 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";}
![Page 32: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/32.jpg)
PHP on Linux and WindowsPHP 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";
![Page 33: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/33.jpg)
Tricks and TipsTricks 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
![Page 34: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/34.jpg)
Tricks and TipsTricks 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
![Page 35: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/35.jpg)
Tricks and TipsTricks and Tips
• Debugging– Use scripts to dump form and session
variables• Write scripts to dump data to discover bad or
missing data
![Page 36: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/36.jpg)
Tricks and TipsTricks and Tips
• Development Tools– Color coding editors
• vim, Emacs, Visual SlickEdit– IDEs
• Windows– Macromedia Dreamweaver– Allaire Homesite– Zend’s PHPEdit
• Linux– ???
![Page 37: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/37.jpg)
PHP 5PHP 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
![Page 38: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/38.jpg)
ResourcesResources
• 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
![Page 39: Developing Web Applications with PHP - UniForum Chicago](https://reader033.fdocuments.in/reader033/viewer/2022051710/5849168f1a28ab21238b4890/html5/thumbnails/39.jpg)
Questions?Questions?
– Any Questions• www.php.net
– Community• www.phpbuilder.com: articles on PHP,
discussion forums– Newsgroups
• comp.lang.php