<<

Intro to PHP

• What is PHP? – Language developed by Rasmus Lerdorf from the Apache Group – Its primary use is for server-side scripng • Ex: To process HTML forms • Ex: To perform a DB query and pass on results • Ex: To dynamically generate HTML – PHP scripts are oen embedded within HTML documents • The server processes the HTML document, execung the PHP segments and substung the output within the HTML document

Lecture 2 1 Intro to PHP – The modified document is then sent to the client – As menoned previously, the client never sees the PHP code • The only reason the client even knows PHP is involved is due to the file extension à . • But even this is not required if the server is configured correctly – The server can be configured to run PHP scripts even if the file does not have a .php extension – By default XAMPP will only execute PHP if the .php extension is provided – See what happens if you have PHP code without the .php extension

Lecture 2 2 Intro to PHP

• PHP is a HUGE language – It is a fully funconal language – It has an incredible amount of built-in features • Form processing • Output / generate various types of data (not just text) • Database access – Allows for various DBs and DB formats • Object-oriented features – Somewhat of a loose hybrid of C++ and Java • Huge funcon / class library

Lecture 2 3 Intro to PHP • We will look at only a small part of PHP – There are also many tools that are already pre-wrien in / for PHP • If you are building a substanal project you may want to use some of these – Ex: hp://github.com/pear – Also see hp://www.php.net/sites.php • There are also content management systems wrien in PHP – Ex: hp://drupal.org/ – Ex: hp://wordpress.org/ • However, we may not be covering them here – We will focus on the straight PHP language

Lecture 2 4 Intro to PHP

• PHP Program Structure – Or really lack thereof – PHP, as with many scripng languages, does not have nearly the same structural requirements as a language like Java – A script can be just a few lines of code or a very large, structured program with classes and objects • The complexity depends on the task at hand – However, there are some guidelines for incorporang PHP scripts into HTML files

Lecture 2 5 Intro to PHP

– When a PHP file is requested, the PHP interpreter parses the enre file • Any content within PHP delimiter tags is interpreted, and the output substuted • Any other content (i.e. not within PHP delimiter tags) is simply passed on unchanged • This allows us to easily mix PHP and other content (ex: HTML) • See: – hp://us3.php.net/manual/en/language.basic-syntax.phptags.php – hp://us3.php.net/manual/en/language.basic-syntax.phpmode.php

Lecture 2 6 Intro to PHP

• Consider the following PHP file HTML 5 Document Root HTML Tag

Simple PHP Example Document Head D

Output

"; O echo "

Output

"; echo "

Output

"; PHP Code C ?>

Lecture 2 7 Intro. to PHP

• Now consider the resulng HTML Simple PHP Example

Output

Output

Output

More PHP Output New line in source but not rendered
New line rendered but not in source • How will it look in the browser? – Look at it in the browser! – See ex2.php

Lecture 2 8 Intro to PHP – If we prefer to separate a PHP code segment from the rest of our script, we can write it in another file and include it • Somemes it is easier if we "separate" the PHP code from the straight html – We also may be using several different files, esp. if we are using classes • But we must tag it even if it is already within a PHP tagged segment – Included files are not interpreted by default » Don’t necessarily have to be PHP » If we want PHP, include PHP tags within the included file – See ex3.php – See hp://us3.php.net/manual/en/funcon.include.php

Lecture 2 9 Lecture 2: Intro to PHP

• Simple types • See: hp://us3.php.net/manual/en/language.types.php – boolean • TRUE or FALSE – integer • Plaorm dependent – size of one machine word – typically 32 or 64 bits – float • Double precision • We could call it a double, but since we don't declare variables (we will discuss shortly) float works

Lecture 2 10 Intro to PHP

– string • We have single-quoted and double-quoted string literals – Double quoted allows for more escape sequences and allows variables to be interpolated into the string – What does that mean? » Rather than outpung the name of the variable, we output its contents, even within a quote » We'll see an example once we define variables » Note that this is NOT done in Java » See example • Length can be arbitrary – Grows as necessary

Lecture 2 11 Intro to PHP

• Easy conversion back and forth between strings and numbers – In Web applicaons these are mixed a lot, so PHP will implicitly cast between the types when appropriate – This is another clear difference between PHP and Java » Java requires explicit casng » PHP allows explicit casng if desired – See: hp://us3.php.net/manual/en/language.types.type-juggling.php • Can be indexed – the preferred way is using square $mystring = "hello"; echo $mystring[1]; – Output here is 'e'

Lecture 2 12 Intro to PHP

• PHP variables – All PHP variables begin with the $ • Variable names can begin with an underscore • Otherwise rules are similar to most other languages – Variables are dynamically typed • No type declaraons – Variables are BOUND or UNBOUND » Unbound variables have the value NULL – Type informaon for a variable is obtained from the current bound value – Compare this to Java

Lecture 2 13 Intro to PHP • Java typing discipline:

Static, strong, safe, nominave (name), manifest

• PHP typing discipline: Dynamic, weak

• Invesgate what these classificaons mean!

Lecture 2 14 Intro to PHP

– Implicaons of dynamic typing: • No “type clash” errors like in Java int x = 3.5; // oh no! String s = 100; // argh! – Instead we have in PHP $x = 3.5; // no problem! $s = 100; // a-ok! • A variable’s type may change throughout program execuon $x = 5; // integer $x = 5 + 4 // integer $x = $x + 1.5; // float $x = $x . “ dollars”; // string

Lecture 2 15 Intro to PHP

– Perhaps intenonally but perhaps by mistake – We have to be careful and to test types during execuon – geype() funcon returns a string representaon of variable’s type $x = 5; echo(geype($x)); // integer $x = $x + 1.5; echo (geype($x)); // float $x = $x . “ dollars”; echo(geype($x)); // string – is_() funcon returns a boolean to test for a given $x = 5; $check = is_int($x); // true $check = is_float($x); // false – Can use these tests to make decisions within a script – See ex4.php

Lecture 2 16 Intro to PHP

– PHP programs have access to a large number of predefined variables • These variables allow the script access to server informaon, form parameters, environment informaon, etc. • Very helpful (as we will see) for determining and maintaining state informaon • Ex: – $_SERVER is an array containing much informaon about the server – $_POST is an array containing variables passed to a script via HTTP POST – $_COOKIE is an array containing cookies – See ex5.php

Lecture 2 17 Intro to PHP

• PHP Expressions and Operators – Similar to those in C++ / Java / – Be careful with a few operators • / in PHP is always floang point division – To get integer division, we must cast to int $x = 15; $y = 6; echo ($x/$y), (int) ($x/$y), "
"; » Output is 2.5 2 • Mixed operands can produce odd results – Values may be cast before comparing

Lecture 2 18 Intro to PHP

Consider comparing a string and an int • Any non-numeric PHP string value will “equal” 0 • Any numeric PHP string will equal the number it represents – first few digits Consider comparing a string and a boolean • Regular PHP string value will “equal” true • “0” string will equal false • Consider comparing an int and boolean • 0, 0.0 are false; anything else is true • Consider int and float • Float is changed to an integer

Lecture 2 19 Intro to PHP • To compare strings, it is beer to use the C- like string comparison funcon, strcmp() • Other string funcons are listed in Sebesta Table 9.3 • Even the == operator has odd behavior in PHP when operands are mixed

Lecture 2 20 Intro to PHP

• An addional equality operator and inequality operator are defined === returns true only if the variables have the same value and are of the same type » If casng occurred to compare, the result is false !== returns true if the operands differ in value or in type – Precedence and associavity are similar to C++/ Java • See hp://us2.php.net/manual/en/language.operators.precedence.php

Lecture 2 21 Intro to PHP • PHP Control Structures – Again, these are similar to those in C++ / Java • if, while, do, for, switch are virtually idencal to those in C+ + and Java • PHP allows for an alternave syntax to designate a block in the if, while, for and switch statements – Open the block with : rather than { – Close the block with endif, endwhile, endfor, endswitch » for (expr1; expr2; expr3): statement ... endfor; – Advantage to this syntax is readability » Now instead of seeing a number of close braces, we see different keywords to close different types of control structures

Lecture 2 22 Intro to PHP

• A nice feature of PHP is that the "control" resulng from a control structure is maintained even when you exit back to html mode – You can then exit php ?> and format in straight html – Thus, in

– PHP also has the foreach loop • We will look at this when we discuss arrays • See ex6.php

Lecture 2 23 In-Class exercise

• Start your XAMPP web browser on your laptop • Open a copy of PHP handout ex5.php from the PHP handouts in Collab under resources • Write a simple php script and execute it • Show resulng pages to course instructor or Tas

Lecture 2 24