eg-259:lecture16
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
eg-259:lecture16 [2008/11/24 09:58] – eechris | eg-259:lecture16 [2013/03/08 18:03] (current) – [Introduction to PHP (Part 1)] eechris | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~SLIDESHOW~~ | ||
+ | ====== Introduction to PHP (Part 1) ====== | ||
+ | **Supplementary Material** | ||
+ | |||
+ | Provided for Reference. This material is no longer taught on this module. | ||
+ | |||
+ | **Lecturer**: | ||
+ | |||
+ | An introduction to PHP, one of the most popular server-side scripting languages for web applications. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Introduction to PHP (Part 1) ===== | ||
+ | |||
+ | PHP is rapidly becoming the favourite language for server-side web applications development. In this lecture we introduce the language and some of its features. To set PHP in context, you should study this lecture in conjunction with the [[eg-259: | ||
+ | |||
+ | ----- | ||
+ | |||
+ | Based on Chapter 12 of Robert W. Sebasta, // | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Contents of this Lecture ===== | ||
+ | |||
+ | // | ||
+ | |||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | |||
+ | The [[eg-259: | ||
+ | |||
+ | |||
+ | ===== Learning Outcomes ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - How does a web server determine whether a requested document includes PHP code | ||
+ | - What are the two modes of the PHP processor? | ||
+ | - What are the syntax and semantics of the include construct? | ||
+ | - Which parts of PHP are case sensitive and which are not? | ||
+ | - What are the four scalar types of PHP? | ||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - How can a variable be tested to determine whether it is bound | ||
+ | - How can you specify to the PHP processor that you want uses of unbound variables to be reported | ||
+ | - How many bytes are used to store a character in PHP? | ||
+ | - What are the differences between single- and double-quoted literal strings | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - If an integer expression appears in Boolean context, how is its Boolean value determined? | ||
+ | - What happens when an integer arithmetic operation results in a value that cannot be represented as an integer? | ||
+ | - If a variable stores a string, how can the character at a specific position in that string be referenced? | ||
+ | - What does the '' | ||
+ | - What is a // | ||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - What are the three ways the value of a variable can be explicitly coerced to a specific type | ||
+ | - How can the type of a variable be determined? | ||
+ | - If a string is compared with a number, what happens? | ||
+ | - What is the advantage of using the unique closing reserved words such as '' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Origins and Uses of PHP ===== | ||
+ | |||
+ | * Developed by Rasmus Lerdorf in 1994 to allow him to track visitors to his Web site | ||
+ | * PHP is an acronym for //Personal Home Page//, or //PHP: Hypertext Preprocessor// | ||
+ | * PHP is an open-source product | ||
+ | * PHP is used for form handling, file processing, and database access | ||
+ | |||
+ | ===== Overview of PHP ===== | ||
+ | |||
+ | * PHP is a server-side scripting language whose scripts are embedded in HTML documents | ||
+ | * PHP is an alternative to CGI, ASP.NET, JSP, and Allaire' | ||
+ | * The PHP processor has two modes: copy (HTML) and interpret (PHP) | ||
+ | * PHP syntax is similar to that of JavaScript | ||
+ | * PHP is dynamically typed | ||
+ | * PHP is purely interpreted | ||
+ | |||
+ | |||
+ | ===== General Syntactic Characteristics ===== | ||
+ | |||
+ | * PHP code can be specified in an HTML document internally or externally: | ||
+ | * Internally: ''<? | ||
+ | * Externally: '' | ||
+ | * The file can contain both PHP and HTML | ||
+ | * If the file contains PHP, the PHP must be enclosed in tags ''<? | ||
+ | * Every variable name begins with a '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== General Syntactic Characteristics (continued) ===== | ||
+ | |||
+ | * Three different kinds of comments (Java and Perl): | ||
+ | <code php> | ||
+ | // JavaScript-like inline comment | ||
+ | # perl-like inline comment | ||
+ | /* Java-like block comment */ | ||
+ | </ | ||
+ | * Compound statements are formed with braces | ||
+ | * Compound statements are not blocks | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // | ||
+ | Java has this property but JavaScript and PHP do not. | ||
+ | |||
+ | ===== Primitives, Operations, and Expressions ===== | ||
+ | |||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | |||
+ | |||
+ | ===== Variables ===== | ||
+ | |||
+ | * There are no type declarations | ||
+ | * An unassigned (unbound) variable has the value '' | ||
+ | * The '' | ||
+ | * The '' | ||
+ | * '' | ||
+ | * PHP has many predefined variables, including the environment variables of the host operating system | ||
+ | * You can get a list of the predefined variables by calling '' | ||
+ | |||
+ | ===== Primitive Types ===== | ||
+ | |||
+ | * //There are eight primitive types//: | ||
+ | * Four scalar types: '' | ||
+ | * Two compound types: '' | ||
+ | * Two special types: '' | ||
+ | * //Integer// and //double// are like those of other languages | ||
+ | |||
+ | |||
+ | |||
+ | ===== Strings ===== | ||
+ | |||
+ | * Characters are single bytes | ||
+ | * String literals are single or double quoted | ||
+ | * // | ||
+ | * Embedded variables are **not** interpolated | ||
+ | * Embedded escape sequences are **not** recognized | ||
+ | * // | ||
+ | * Embedded variables **are** interpolated | ||
+ | * If there is a variable name in a double-quoted string but you don't want it interpolated, | ||
+ | * Embedded escape sequences **are** recognized | ||
+ | * For both single- and double-quoted literal strings, embedded delimiters must be escaped | ||
+ | |||
+ | ----- | ||
+ | |||
+ | < | ||
+ | **Characters are single bytes**: This means that, unlike HTML, PHP does not natively support Unicode characters. There are a pair of functions '' | ||
+ | </ | ||
+ | |||
+ | ===== Booleans ===== | ||
+ | |||
+ | * values are '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | ===== Arithmetic Operators and Expressions ===== | ||
+ | |||
+ | * Usual C-based language operators | ||
+ | * If the result of integer division is not an integer, a double is returned | ||
+ | * Any integer operation that results in overflow produces a double | ||
+ | * The modulus operator coerces its operands to integer, if necessary | ||
+ | * When a double is rounded to an integer, the rounding is always towards zero | ||
+ | * // | ||
+ | * '' | ||
+ | |||
+ | ===== String Operations and Functions ===== | ||
+ | |||
+ | * The only operator is period '' | ||
+ | * // | ||
+ | * // | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Scalar Type Conversions ===== | ||
+ | |||
+ | * //String to numeric// | ||
+ | * If the string contains a period, an '' | ||
+ | * If the string does not begin with a sign or a digit, zero is used | ||
+ | * Explicit conversions – //casts// | ||
+ | * e.g., '' | ||
+ | * The type of a variable can be determined with '' | ||
+ | <code php> | ||
+ | gettype($total) | ||
+ | is_integer($total) // a predicate function | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Output ===== | ||
+ | |||
+ | * Output from a PHP script is HTML that is sent to the browser | ||
+ | * HTML is sent to the browser through standard output | ||
+ | * There are three ways to produce output: '' | ||
+ | * '' | ||
+ | <code php> | ||
+ | echo " | ||
+ | | ||
+ | print " | ||
+ | </ | ||
+ | |||
+ | ===== More Output ===== | ||
+ | |||
+ | * '' | ||
+ | <code html> | ||
+ | < | ||
+ | </ | ||
+ | ---- | ||
+ | * This shorthand should only be used for printing variables or with functions that return a string. | ||
+ | * The short syntax only works with the [[http:// | ||
+ | |||
+ | ===== Hello World (PHP) ===== | ||
+ | |||
+ | * PHP code is placed in the body of an HTML document | ||
+ | <code html> | ||
+ | < | ||
+ | <html lang=" | ||
+ | < | ||
+ | <meta charset=" | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <?php | ||
+ | print " | ||
+ | ?> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== First PHP Example ===== | ||
+ | |||
+ | A simple example to illustrate a PHP document: [[/ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <code php> | ||
+ | < | ||
+ | |||
+ | <!-- today.php - A simple example to illustrate a PHP document --> | ||
+ | <html lang=" | ||
+ | < | ||
+ | <meta charset=" | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <p> | ||
+ | <?php | ||
+ | print "< | ||
+ | print "Today is:</ | ||
+ | print date(" | ||
+ | print "< | ||
+ | ?> | ||
+ | </p> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Result: | ||
+ | |||
+ | {{eg-259: | ||
+ | |||
+ | |||
+ | |||
+ | ===== Control Expressions ===== | ||
+ | |||
+ | * Relational operators -- same as JavaScript, (including '' | ||
+ | * Boolean operators -- two sets, ''&&'' | ||
+ | |||
+ | ===== Selection statements ===== | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * The '' | ||
+ | |||
+ | ===== Looping constructs ===== | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ===== Other statements ===== | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | |||
+ | ===== Alternative componund delimiters ===== | ||
+ | |||
+ | * " | ||
+ | <code php> | ||
+ | if (...) : | ||
+ | ... | ||
+ | endif; | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Another Example ===== | ||
+ | |||
+ | An example to illustrate loops and arithmetic: [[/ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | * Code: | ||
+ | <code php> | ||
+ | < | ||
+ | |||
+ | <!-- powers.php | ||
+ | An example to illustrate loops and arithmetic | ||
+ | | ||
+ | <html lang=" | ||
+ | < | ||
+ | <meta charset=" | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | <table border = " | ||
+ | < | ||
+ | <tr> | ||
+ | <th> Number </th> | ||
+ | <th> Square Root </th> | ||
+ | <th> Square </th> | ||
+ | <th> Cube </th> | ||
+ | <th> Quad </th> | ||
+ | </tr> | ||
+ | <?php | ||
+ | for ($number = 10; $number <=20; $number++) { | ||
+ | $root = sqrt($number); | ||
+ | $square = pow($number, | ||
+ | $cube = pow($number, | ||
+ | $quad = pow($number, | ||
+ | print("< | ||
+ | print("< | ||
+ | print("< | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Result | ||
+ | |||
+ | {{eg-259: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Intermingling HTML and PHP ===== | ||
+ | |||
+ | * HTML can be intermingled with PHP script | ||
+ | <code php> | ||
+ | <?php | ||
+ | $a = 7; | ||
+ | $b = 7; | ||
+ | if ($a == $b) { | ||
+ | $a = 3 * $a; | ||
+ | ?> | ||
+ | <br /> | ||
+ | At this point, $a and $b are | ||
+ | equal <br /> | ||
+ | So, we change $a to three times $a | ||
+ | <?php | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | <note warning> | ||
+ | this is not necessarily a good idea! Notice how the end brace for the conditional is separated from the loop body by several unrelated HTML tags. This produces fragile code -- if the second set of PHP tags where removed, a syntax error would occur which might be difficult to track down. | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Summary of This Lecture ===== | ||
+ | |||
+ | // | ||
+ | |||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | |||
+ | The [[eg-259: | ||
+ | |||
+ | ===== Learning Outcomes ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - How Does a Web server determine whether a requested document includes PHP code | ||
+ | - What are the two modes of the PHP processor? | ||
+ | - What are the syntax and semantics of the include construct? | ||
+ | - Which parts of PHP are case sensitive and which are not? | ||
+ | - What are the four scalar types of PHP? | ||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - How can a variable be tested to determine whether it is bound | ||
+ | - How can you specify to the PHP processor that you want uses of unbound variables to be reported | ||
+ | - How many bytes are used to store a character in PHP? | ||
+ | - What are the differences between single- and double-quoted literal strings | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - If an integer expression appears in Boolean context, how is its Boolean value determined? | ||
+ | - What happens when an integer arithmetic operation results in a value that cannot be represented as an integer? | ||
+ | - If a variable stores a string, how can the character at a specific position in that string be referenced? | ||
+ | - What does the '' | ||
+ | - What is a // | ||
+ | |||
+ | |||
+ | ===== Learning Outcomes (continued) ===== | ||
+ | |||
+ | //At the end of this lecture you should be able to answer these questions//: | ||
+ | |||
+ | - What are the three ways the value of a variable can be explicitly coerced to a specific type | ||
+ | - How can the type of a variable be determined? | ||
+ | - If a string is compared with a number, what happens? | ||
+ | - What is the advantage of using the unique closing reserved words such as '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== What's Next? ===== | ||
+ | |||
+ | ** Introduction to PHP (Part 2) ** | ||
+ | |||
+ | //Further features of the PHP language// | ||
+ | |||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | * [[eg-259: | ||
+ | |||
+ | [[eg-259: |