Upload
jussi-pohjolainen
View
68.216
Download
0
Embed Size (px)
Citation preview
Introduction to PHP
Jussi PohjolainenTAMK University of Applied Sciences
WEB PROGRAMMING CONCEPTS
Three-tiered Web Site: LAMPClientUser-agent: Firefox
ServerApache HTTP Server
example requestGET / HTTP/1.1Host: www.tamk.fiUser-Agent: Mozilla/5.0 (Mac..)...
response
DatabaseMySQL
PHPPHP
Java EE Architecture
(x)html / xml
Applet
ClientApplication
J2EE Application Server
Web Container
Servlets JSPJSPsServlets
EJB Container
RM
I/IIOP
JND
I
JTA
JDB
C
JMS
Java
Ma
il
JAF
Session Beans
Entity BeansMsg-Driven Beans
RM
I/IIOP
JND
I
JTA
JDB
C
JMS
Java
Ma
il
JAF
HTTP(S)JDBC
JavaMail
RMI
IIOP
JNDI
JMS
DB
Java-Application
CORBAServer
Message Queue
Directory Service
Client
Mail Server
Server Side Techniques
• Server side scripting requires installation on the server side
• Typically client siis only xhtml and it unaware that the xhtml was produced by a server side script
• Does not require any installations or add-ons on the client
Server Side Techniques
• PHP• Java EE: Servlet, JSP• .NET• CGI / Perl (Very old)• Ruby• …
Client Side Techniques
• Requires that the client supports the technique
• JavaScript, Applet, Flash…
Web Application Frameworks
• A web application framework is a software framework that is designed to support the development of dynamic websites, Web applications and Web services.
• Numerous frameworks available for many languages
Web App vs. Web Site?
• What’s the difference between Web App and Web Site?
• Rich Internet Application?, AJAX?, Thin Client?• Full application running in your browser or
just a web site?
PHP: HYPERTEXT PREPROCESSOR
Introduction to PHP
• PHP is a computer scripting language.• Originally designed for producing dynamic web pages• Appeared in 1995• PHP Group is responsible for the language, no formal
specification• Free software• Runs on most operating systems and platforms• URL: http://www.php.net
Response
Introduction to PHP Syntax
• PHP has quite easy syntax, if you are familiar with any c-type language
• It has all the same structures that you are familiar with other programming languages
• PHP is designed to output to browser, but it is possible to do also CLI apps.
Example
<?php
print "What is your name?\n";
$name = trim(fgets(STDIN));
print "Hello " . $name;
?>
Variables
• Variables in PHP are represented by a dollar sign
• PHP supports eight types:– boolean, integer, float, double, array, object,
resource and NULL
Example (php.net)<?php
$a_bool = TRUE; // a boolean
$a_str = "foo"; // a string
$a_str2 = 'foo'; // a string
$an_int = 12; // an integer
echo gettype($a_bool); // prints out: boolean
echo gettype($a_str); // prints out: string
// If this is an integer, increment it by four
if (is_int($an_int)) {
$an_int += 4;
}
// If $bool is a string, print it out
// (does not print out anything)
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>
Naming Variables
• Case-sensitivity• Start with letter or _• After that you can have numbers, letters and _
– $var = 'Bob';– $Var = 'Joe';– print "$var, $Var"; – $4site = 'not yet'; – $_4site = 'not yet';
Constants
• You cannot alter the value of constant after declaration– define(CONSTANT, "value");– print CONSTANT;
Magic Constants
• PHP has lot of predefined variables• Also predefined constants:
– __LINE__– __FILE__– __FUNCTION__– __CLASS__– __METHOD__
• See: http://fi.php.net/manual/en/language.constants.predefined.php
Scope
<?php
$a = "Pekka";
print ”My name is " . $a;
?>
Scope
<?php
$a = "Pekka";
function Test() {
print $a;
}
print ”My name is ”;
Test();
?>
Scope
<?php
$a = "Pekka";
function Test() {
global $a;
print $a;
}
print ”My name is ”;
Test();
?>
Control Structures
• If, else, elseif, switch• while, do-while, for• foreach• break, continue•
PHP BASICS
Strings
• Single quoted: 'this is a $variable'• Double quoted: "this is a $variable"• Heredoc:
– $str = <<<EOD– Example of string– spanning multiple lines– using heredoc syntax.– EOD;
Modifying the String
• $mj = "moi";• print $mj[0];• $mj[0] = 'x';• print $mj;• $mj = $mj . " hei";• print $mj;• $mj .= " terse";• print $mj;
String functions
• A lot of functions…– http://www.php.net/manual/en/ref.strings.php
Statements
• Every statement ends with ;– $a = 5;– $a = function();– $a = ($b = 5);– $a++; ++$a;– $a += 3;
Operators
• Arithmethic: +,-,*,%• Setting variable: =• Bit: &, |, ^, ~, <<, >>• Comparison: ==, ===, !=, !==, <, > <=, >=
Ternary Operator
$variable = (1 < $x) ? 'value1' : 'value2';
Equals
if(1 < $x) {
$variable = 'value1';
}
else {
$variable = 'value1';
}
Execution Operator
• Execute command in shell– $result = `ls -al`;– print $result;
• Does the same than shell_exec() - function
Logical Operators
• $a and $b• $a or $b• $a xor $b• !$a;• $a && $b;• $a || $b;
String Operators
• Two operators for strings: '.' and '.='• '.' – combining strings.• '.=' – appends string to the end.• Example:• $v= "Hello" . $b;• $v.= "Hello";
Arrays
• See – http://php.tpu.fi/~pohjus/lectures/php/php-
arrays.html
CONTROL STRUCTURES
IF<?php
if ($a > $b) {
echo "a is bigger than b";
} else {
echo "a is NOT bigger than b";
}
if ($a > $b) {
echo "a is bigger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>
While and Do-While
<?php
$a=0;
while($a<10){
print $a; $a++;
}
$i = 0;
do {
print $i;
} while ($i > 0);
?>
For
for ($i = 1; $i <= 10; $i++) {
print $i;
}
Foreach
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
echo $value;
}
Switch
switch ($i) {
case 0:
echo "i equals 0";
break;
case 1:
echo "i equals 1";
break;
case 2:
echo "i equals 2";
break;
}
PHP COMBINED WITH XHTML
Response
Example: spaghetti-way<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>xhtml-doku</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>Title</h1>
<?php
print "<p>Hello from PHP!</p>";
?>
</body>
</html>
Better ways
• Use functions• Use OO
PHP AND USER INPUT
PHP and User Input via Forms
• See– http://php.tpu.fi/~pohjus/lectures/php/forms-
and-php.html