10.04.2014 Views

to get the file

to get the file

to get the file

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Lecture 6.<br />

PHP: Part 1<br />

1


Origins and Uses of PHP<br />

• Developed by Rasmus Lerdorf, a member of <strong>the</strong> Apache<br />

Group, in 1994 <strong>to</strong> track visi<strong>to</strong>rs <strong>to</strong> his Web site<br />

• PHP‟s development was transferred <strong>to</strong> a small group of<br />

devoted volunteers and now is an open-source product<br />

• PHP is originally an acronym for Personal Home Page, later<br />

PHP: Hypertext Preprocessor<br />

• PHP, as a server-side scripting language, is used for form<br />

handling, <strong>file</strong> processing, and database access<br />

• has driver support for 15 database systems<br />

• supports electronic mail pro<strong>to</strong>cols POP3 and IMAP<br />

• supports distributed object architectures COM and CORBA<br />

2


Overview of PHP<br />

• PHP is a server-side scripting language whose scripts are<br />

embedded in HTML documents<br />

• Similar <strong>to</strong> JavaScript, but on <strong>the</strong> server side<br />

• PHP is an alternative <strong>to</strong> CGI, Active Server Pages (ASP),<br />

and Java Server Pages (JSP)<br />

• Filename extension is .php, .php3, or .phtml<br />

• PHP syntax is similar <strong>to</strong> that of JavaScript<br />

• PHP is dynamically typed<br />

• PHP has an extensive library of functions, making a flexible<br />

and powerful<br />

• http://www.php.net<br />

3


Overview of PHP<br />

• The PHP processor has two modes: copy (XHTML) and<br />

interpret (PHP).<br />

• PHP processor takes a PHP document as input and<br />

produces an XHTML document <strong>file</strong><br />

• When it finds XHTML code in <strong>the</strong> input <strong>file</strong>, simply<br />

copies it <strong>to</strong> <strong>the</strong> output <strong>file</strong><br />

• When it finds PHP script, it interprets it and send any<br />

output of <strong>the</strong> script <strong>to</strong> <strong>the</strong> output <strong>file</strong><br />

• This new output <strong>file</strong> is sent <strong>to</strong> <strong>the</strong> requesting browser.<br />

• The client never sees <strong>the</strong> PHP script.<br />

4


Operation Overview<br />

Web browser<br />

Client<br />

Request<br />

a page<br />

Transfer<br />

XHTML <strong>file</strong><br />

Request<br />

data<br />

processing<br />

Web Server<br />

Generate<br />

XHMTL <strong>file</strong><br />

O<strong>the</strong>r<br />

Server<br />

Platform<br />

PHP Engine<br />

DB<br />

5


General Syntactic Characteristics<br />

• PHP code can be specified in an HTML document<br />

internally or externally:<br />

Internally:<br />

<br />

Externally: include ("myScript.inc")<br />

• The included <strong>file</strong> can contain XHTML or client-side<br />

script as well as PHP<br />

• If <strong>the</strong> <strong>file</strong> has PHP, <strong>the</strong> PHP must be in ,<br />

even if <strong>the</strong> include appears in <br />

6


General Syntactic Characteristics<br />

• All variable names begin with $<br />

• The name part is like <strong>the</strong> names of variables in many<br />

programming languages: a letter or an underscore<br />

followed by any number of letters, digits, or underscores<br />

• PHP variables are case sensitive, but reserved words<br />

and function names are not. (Table 12.1)<br />

(Ex) while, WHILE, While, and wHiLe are same<br />

• Comments - three different kinds (Java and Perl)<br />

(a) // ... ; for single line<br />

(b) # ... ; for single line<br />

(c) /* ... */ ; for multiple-line<br />

7


PHP Reserved Words<br />

and else function not this<br />

break elseif global or true<br />

case extends if require var<br />

class false include return virtual<br />

continue for list static xor<br />

default foreach new switch while<br />

do<br />

8


General Syntactic Characteristics<br />

• PHP statements are terminated with semicolons.<br />

• Compound statements for control structures are<br />

formed with braces<br />

• Unless used as <strong>the</strong> body of a function definition,<br />

compound statements cannot be blocks<br />

• They cannot define locally scoped variables<br />

9


Example<br />

10


PHP TYPES<br />

• Four scalar types<br />

• Boolean<br />

• Integer<br />

• Double<br />

• String<br />

• Two compound types<br />

• Array<br />

• Object *<br />

• Two special types<br />

• NULL<br />

• Resource *<br />

* will not be covered here.<br />

11


Variables<br />

• There are no type declarations because of dynamic typing<br />

• The type of a variable is set every time it is assigned a value<br />

• An unassigned ( unbound ) variable has <strong>the</strong> value, NULL<br />

• A variable of NULL in <strong>the</strong> expression will be coerced <strong>to</strong> a value<br />

dictated by <strong>the</strong> context of <strong>the</strong> use<br />

(Ex) If a number, NULL is coerced <strong>to</strong> 0<br />

If a string, NULL is coerced <strong>to</strong> <strong>the</strong> empty string<br />

• The unset function sets a variable <strong>to</strong> NULL<br />

• The IsSet function tests whe<strong>the</strong>r a variable is NULL<br />

(Ex) IsSet ( $fruit ) returns TRUE if $fruit has non-NULL value<br />

12


Variables<br />

• If you prefer <strong>to</strong> be informed when an unbound variable<br />

is referenced, place <strong>the</strong> error_reporting(15) at <strong>the</strong><br />

beginning of <strong>the</strong> script in <strong>the</strong> document <strong>file</strong><br />

• The error_reporting function is used <strong>to</strong> change <strong>the</strong> error –<br />

reporting level of <strong>the</strong> PHP interpreter<br />

• The default error-reporting level is 7<br />

• PHP has many predefined variables, including <strong>the</strong><br />

environment variables of <strong>the</strong> host operating system<br />

• You can <strong>get</strong> a list of <strong>the</strong> predefined variables by<br />

calling phpinfo() in a script<br />

13


primitive types<br />

• Integer type corresponds <strong>to</strong> <strong>the</strong> long type of C and its<br />

successors<br />

• Double type corresponds <strong>to</strong> <strong>the</strong> double type of C and<br />

its successors. Decimal point, an exponent, or both.<br />

• There is no character type<br />

• A single character data value is a string of length one<br />

• Strings<br />

• Characters are single bytes<br />

• String literals use single (′)or double quotes(″)<br />

14


Example<br />

• Integer<br />

$var = 1234;<br />

$var = -1234;<br />

$var = 01234;<br />

$var = 0x1234;<br />

// Decimal<br />

// Decimal<br />

// Octal<br />

// Hexadecimal<br />

• Floating point<br />

$a = 1.234; // Float<br />

$a = 0.1234e1; // Exponential<br />

15


String<br />

• Single-quoted string literals<br />

• Embedded variables are NOT interpolated<br />

(Ex) „The sum is: $sum‟ = The sum is: $sum<br />

• Embedded escape sequences are NOT recognized<br />

• Double-quoted string literals<br />

• Embedded variables ARE interpolated<br />

(Ex) “The sum is: $sum” = The sum is: 12.4<br />

• If <strong>the</strong>re is a variable name in a double-quoted string but<br />

you don‟t want it interpolated, it must be backslashed<br />

• Embedded escape sequences ARE recognized<br />

• For both single- and double-quoted literal strings,<br />

embedded delimiters must be backslashed<br />

16


Special character<br />

Special char.<br />

\n<br />

\r<br />

\t<br />

\\<br />

\$<br />

\”<br />

Semantics<br />

new line<br />

Return carriage<br />

Tab<br />

Backslash<br />

Dollar<br />

Quotation mark<br />

17


Boolean<br />

• The only two possible values are TRUE and FALSE<br />

(case insensitive)<br />

• If an integer expression is used in Boolean context, it<br />

is FALSE if it is zero; o<strong>the</strong>rwise, it is TRUE.<br />

• If a string expression is used in Boolean context, it is<br />

FALSE if it is ei<strong>the</strong>r <strong>the</strong> empty string or <strong>the</strong> string "0";<br />

o<strong>the</strong>rwise, it is TRUE.<br />

18


Arithmetic Opera<strong>to</strong>rs and Expressions<br />

• +, -, *, /, %, ++, --<br />

• For +,- and *, if ei<strong>the</strong>r operand is double, <strong>the</strong>n it<br />

produces a double result<br />

• If <strong>the</strong> result of integer division is not an integer, a<br />

double is returned<br />

• Any integer operation that results in overflow produces<br />

a double<br />

• The modulus opera<strong>to</strong>r (%) coerces its non-integer<br />

operands <strong>to</strong> integer<br />

19


Predefined Functions<br />

Functi<br />

on<br />

Paramet<br />

er<br />

Returns<br />

floor Double Largest integer less than or equal <strong>to</strong> <strong>the</strong> parameter<br />

ceil<br />

Double<br />

round Double Nearest integer<br />

srand Integer<br />

rand<br />

abs<br />

min<br />

Two<br />

numbers<br />

Integer or<br />

double<br />

Numbers Smallest<br />

Smallest integer greater than or equal <strong>to</strong> <strong>the</strong><br />

parameter<br />

Initializes a random number genera<strong>to</strong>r with <strong>the</strong><br />

parameter<br />

A pseudorandom number greater than <strong>the</strong> first<br />

parameter and smaller than <strong>the</strong> second<br />

Absolute value of <strong>the</strong> parameter<br />

max<br />

Numbers Largest<br />

20


String Operations and Functions<br />

• The only opera<strong>to</strong>r is period(.) for catenation<br />

• String variables can be treated like arrays for access <strong>to</strong><br />

individual characters<br />

• The position can be specified in braces<br />

(Ex) If $str has “apples”, $str{3} is <strong>the</strong> fourth (l)<br />

• Functions:<br />

• strlen, strcmp, strpos, substr, as in C<br />

• chop – remove whitespace from <strong>the</strong> right end<br />

• trim – remove whitespace from both ends<br />

• ltrim – remove whitespace from <strong>the</strong> left end<br />

• str<strong>to</strong>lower, str<strong>to</strong>upper<br />

21


String functions<br />

Function Parameter Returns<br />

strlen A string The no. of characters in <strong>the</strong> string<br />

strcmp Two strings 0, negative, or positive number<br />

strpos Two strings The character position...<br />

substr<br />

A string and<br />

an integer<br />

The substring of <strong>the</strong> string, starting from<br />

<strong>the</strong> second parameter (possibly, third<br />

parameter for length)<br />

chop A string Remove all whitespace from its end<br />

trim A string Remove all whitespace from both ends<br />

ltrim A string Remove all whitespace from its begin<br />

str<strong>to</strong>lower A string All uppercase letters converted <strong>to</strong><br />

lowercase<br />

str<strong>to</strong>upper A string All lowercase letters converted <strong>to</strong><br />

uppercase<br />

22


Example<br />

$str = “Apples are good”;<br />

$sub = substr ($str, 7, 1);<br />

The value of $sub is „a‟.<br />

23


Scalar Type Conversions<br />

• Implicit type conversions (coercions)<br />

• The context of an expression determines <strong>the</strong> type that is<br />

expected or required<br />

• When a numeric value appears in string context, <strong>the</strong><br />

numeric value is coerced <strong>to</strong> a string<br />

• When a string value appears in numeric context, <strong>the</strong><br />

string value is coerced <strong>to</strong> a number.<br />

• String <strong>to</strong> numeric<br />

• If <strong>the</strong> string contains an e or an E, it is converted <strong>to</strong><br />

double; o<strong>the</strong>rwise <strong>to</strong> integer<br />

• If <strong>the</strong> string does not begin with a sign or a digit, <strong>the</strong><br />

conversion fails and zero is used<br />

• Nonnumeric characters following <strong>the</strong> number in <strong>the</strong><br />

string are ignored.<br />

24


Scalar Type Conversions<br />

• Explicit type conversions in three different ways<br />

• Using cast: (type_name) exp<br />

(Ex) $<strong>to</strong>tal = 4.333; (int) $<strong>to</strong>tal // 4<br />

• Using function: intval, doubleval, strval<br />

(Ex) $<strong>to</strong>tal = 4.333; intval($<strong>to</strong>tal) // 4<br />

• Using settype function: settype (variable, type_name)<br />

(Ex) settype($<strong>to</strong>tal, "integer") // 4<br />

• The type of a variable can be determined with <strong>get</strong>type<br />

or type testing functions<br />

• <strong>get</strong>type($<strong>to</strong>tal) - returns <strong>the</strong> type of <strong>the</strong> current value.<br />

It may return "unknown"<br />

• is_integer($<strong>to</strong>tal), is_float(), is_bool(), is_string()<br />

– a predicate function<br />

25


Output<br />

• Any output from a PHP script becomes part of <strong>the</strong><br />

document <strong>the</strong> PHP processor is building<br />

• An output from a PHP script is in <strong>the</strong> form of XHTML<br />

that is sent <strong>to</strong> <strong>the</strong> browser<br />

• XHTML is sent <strong>to</strong> <strong>the</strong> browser through standard output<br />

• There are three ways <strong>to</strong> produce output :<br />

• echo<br />

• print<br />

• printf<br />

26


Output<br />

• echo function<br />

• If paren<strong>the</strong>ses are included, only a single string parameter<br />

is acceptable<br />

• O<strong>the</strong>rwise, any number of parameters are acceptable<br />

(Ex) echo "whatever", "it may ";<br />

echo ("first ") ;<br />

• returns no value<br />

• echo and print take a string, but coerce o<strong>the</strong>r values<br />

<strong>to</strong> strings<br />

(Ex) echo 47 or print(47) will produce 47<br />

27


Output<br />

• print function:<br />

• Called with only one parameter, possibly in a paren<strong>the</strong>sis<br />

(Ex) print "Welcome <strong>to</strong> my site!";<br />

• Will coerce non-string type value <strong>to</strong> a string<br />

• Return a value (1 if successful, 0 o<strong>the</strong>rwise)<br />

• printf function<br />

• Is like its counterpart in C<br />

• Can control <strong>the</strong> format of displayed data completely<br />

(Ex) $day = “Tuesday”;<br />

$high = 79;<br />

printf (“The high on %7s was %3d”, $day, $high);<br />

28


Example<br />

<br />

<br />

<strong>to</strong>day.php <br />

<br />

<br />

<br />

<br />

<br />

<br />

Welcome <strong>to</strong> my home page<br />

<br />

Today is: Saturday, June 1st<br />

29


Control Statements<br />

• Relational Opera<strong>to</strong>rs<br />

• Use eight relational opera<strong>to</strong>rs of JavaScript<br />

• > , < , >= ,


Control Statements<br />

• Selection statements<br />

• if, if-else, elseif<br />

• switch - as in C<br />

• while - just like C<br />

• do-while - just like C<br />

• for - just like C<br />

• foreach - discussed later<br />

• break - in any for, foreach, while, do-while, or switch<br />

• continue - in any loop<br />

31


Alternative compound delimiters<br />

• Applicable <strong>to</strong> if, switch, for, and while control<br />

statements<br />

• Opening delimiter is <strong>the</strong> colon with its own closing<br />

reserved word<br />

• More readable.<br />

while ($a < 100) {<br />

$a = $a * $b + 7;<br />

$b++;<br />

}<br />

while ($a < 100) :<br />

$a = $a * $b + 7;<br />

$b++;<br />

endwhile;<br />

SHOW powers.html<br />

32


Example<br />

if ($day ==== “Saturday” || $day == “Sunday”)<br />

$<strong>to</strong>day = “weekend”;<br />

else {<br />

$<strong>to</strong>day = “weekday”;<br />

$work = true;<br />

}<br />

switch ($bordersize) {<br />

case “0”: print “”; break;<br />

case “1”: print “”; break;<br />

case “4”: print “”; break;<br />

case “8”: print “”; break;<br />

default: print “Error-invalid value: $bordersize ”;<br />

}<br />

33


Example<br />

$fact = 1;<br />

$count = 1;<br />

while ($count < $n) {<br />

$count ++;<br />

$fact *= $count;<br />

}<br />

for ($count = 1, $fact = 1; $count < $n) {<br />

$count++;<br />

$fact *= $count;<br />

}<br />

34


HTML/PHP document<br />

• HTML can be intermingled with PHP script<br />

35


Example<br />

<br />

<br />

powers.php <br />

<br />

<br />

<br />

Powers table <br />

<br />

Number <br />

Square Root <br />

Square <br />

Cube <br />

Quad <br />

<br />

36


Result<br />

Powers table<br />

Number Square Root Square Cube Quad<br />

1 1 1 1 1<br />

2 1.4142125623731 4 8 16<br />

3 1.7320508075689 9 27 81<br />

4 2 16 64 256<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

38


PHP in HTML<br />

• HTML<br />

<br />

<br />

PHP <br />

Programming <br />

<br />

<br />

• PHP in HTML<br />

<br />

<br />

<br />

<br />

<br />

39


PHP in HTML<br />

• Using variable<br />

<br />

<br />

<br />

<br />

<br />

<br />

40

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!