170 likes | 398 Views
PHP Introduction. Bill Jerome. PHP Hypertext Preprocessor. No joke, that’s what it stands for Now very widely used for websites Only three years ago it was considered a risky alternative for development Has a lot of community support Is developed by hackers (see name) Is hacky. PHP .
E N D
PHP Introduction Bill Jerome
PHP Hypertext Preprocessor • No joke, that’s what it stands for • Now very widely used for websites • Only three years ago it was considered a risky alternative for development • Has a lot of community support • Is developed by hackers (see name) • Is hacky
PHP • Hacky, but (also?) very c-like • Classes, etc., work very much like c/c++ • Designed to work in the world of HTML • Is run-time interpreted by the web server • Exception: those running Zend Cache • We sure won’t be • Reminder: it’s hacky
Simple PHP • PHP is meant to be invoked inline with content • Page “escapes” into and out of a regular html document • File extension is .php (was .php3 for version 3) • Initial use was control flow and simple scripting
A quick example • <html> <head>Test page</head> <body> The time is now <?php echo date(); ?> <hr> </body> </html>
A quick example • <html> <head>Test page</head> <body> The time is now <?php here we “jump into” php echo date(); ?> here we “jump” back out <hr> </body> </html>
Another example <?php include “utilities.php”; ?> <html> <head>Test page</head> <body> <?php if ($utils->isFriendly()) { echo “The time is now “ . date(); } else { echo “I will not give you the time of day”; } ?> <hr> </body> </html>
Another example – harder to read <?php include “utilities.php”; ?> <html> <head>Test page</head> <body> <?php if ($utils->isFriendly()) { echo “The time is now “ . date(); } else { ?> <i>I will not give you the time of day!</i> <?php } ?> <hr> </body> </html>
More PHP language details • Variables are implicitly typed • This is good • This is bad • Variables start with $ • All get/post variables automatically defined • With most default server settings • With an inline directive if need be
Defined variable example • foo.html: <html><head></head><body> <form submit=“getFoo.php”> Enter your name: <input type=“text” name=“username”> <input type=“submit”> </body></html> • getFoo.php: <html><head></head></body> Your name is <?php if (!strcmp($username)) { echo $username; } else { echo “not given”; } ?> !<br> </body></html>
Function list examples • http://www.php.net/manual/en/function.strlen.php • All string functions • Some are “obvious” to c programmers • strlen, printf, fprintf, strpos • Some are web tailored • htmlentities, htmlspecialchars • Others are new (hacky) • addcslashes, explode, soundex, quotemeta, …
Classes • OOP • Class structures will be defined, helping integration with other apps and work together • APIs followed by implementation • Inheritance • Object serialization • “Magic functions”
Class example class Cart { var $items; // Items in our shopping cart // Add $num articles of $artnr to the cart function add_item ($artnr, $num) { $this->items[$artnr] += $num; } // Take $num articles of $artnr out of the cart function remove_item ($artnr, $num) { if ($this->items[$artnr] > $num) { $this->items[$artnr] -= $num; return true; } else { return false; } } }
Inheritance example Class ParentObject { var $value; function ParentObject() { $this->value = 42; } } class MemberObject extends ParentObject { var $string; function MemberObject() { $this->string = "This is a test string."; $this->ParentObject(); } } class ObjTest { var $ObjPointer; function ObjTest() { $tmp = new MemberObject; $this->ObjPointer = $tmp; } } $object = new ObjTest; echo "String Contents: " . $object->ObjPointer->string . "\n"; echo "Value Contents: " . $object->ObjPointer->value . "\n";
Back to being hacky… • “->” is NOT the same thing as it is in c++ • No pointers in PHP • ONLY a member operator • Oh, you wanted pointers? • Variable variables • Yeah, you heard right • Don’t get me started…
Variable variables and classes example class a { var $b; } $object = new a; $object->b = "hello"; $member_name = 'b'; echo $object->$member_name; $object->$member_name = " world"; echo $object->$member_name;
Resources • http://www.php.net • http://www.evilwalrus.com/ • http://www.devnetwork.net/