You are on page 1of 17

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/

You might also like