PHP Introduction
Mohamed Ashraf
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
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
<?phpecho date();
?> <hr>
</body></html>
A quick example
<html><head>Test page</head><body>The time is now
<?php here we “jump into” phpecho date();
?> here we “jump” back out <hr>
</body></html>
Another example
<?phpinclude “utilities.php”;
?><html><head>Test page</head><body>
<?phpif ($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
<?phpinclude “utilities.php”;
?><html><head>Test page</head><body>
<?phpif ($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.w3schools.com