160 likes | 308 Views
UFCE8V-20-3 Information Systems Development 3 (SHAPE HK). Lecture 3 PHP (2) : Functions , User Defined Functions & Environment Variables. last lecture …. PHP origins & use Basic Web 1.0 2-tier/3-tier architecture with PHP
E N D
UFCE8V-20-3 Information Systems Development 3 (SHAPE HK) Lecture 3PHP (2) : Functions, User Defined Functions & Environment Variables
last lecture … • PHP origins & use • Basic Web 1.0 2-tier/3-tier architecture with PHP • PHP as a scripting language (supporting procedural & oo paradigms) • Basic structure & use (statements, variables, control structures, operators) • PHP data types - 5 basic – integer, floating-point, string, boolean & NULL & 3 complex - array, hash & object • the exit()& die()statements
PHP Functions (1) :inbuilt function library (700+) • Basic tasks • String Handling • Mathematics – random numbers, trig functions.. • Regular Expressions • Date and time handling • File Input and Output • And more specific functions for - • Database interaction – - MySQL, Oracle, Postgres, Sybase, MSSQL .. • Encryption • Text translation • Spell-checking • Image creation • XML etc.etc.
PHP Functions (3): user defined functions • Declaring a function • - functions are declared using the function statement, a name and parenthesis () • e.g • function myfunction() {…..} • - functions can accept any number of arguments and these are separated by • commas inside the parenthesis • e.g • function myFunction(arg1, arg2) {…..} • - the following simple function prints out any text passed to it as bold • <?php • function printBold($text){ • print("<b>$text</b>"); • } • print("This Line is not Bold<br>\n"); • printBold("This Line is Bold"); • print("<br>\n"); • print("This Line is not Bold<br>\n"); • ?> run example
PHP Functions (4): user defined functions • the return statement - at some point the function will finish and is ready to return control to the caller - execution then picks up directly after the point the function was called - it is possible to have multiple return points from a function (but this will reduce code readability) - if a return statement includes an expression, return(expression), the value of the expression will be passed back - example: <?php function makeBold($text){ $text = "<b>$text</b>"; return($text); } print("This Line is not Bold<br>\n"); print(makeBold("This Line is Bold") . "<br>\n"); print("This Line is not Bold<br>\n"); ?> run example
PHP Functions (5): user defined functions - values and references - for most data types, return values are passed by value - for objects, return values are returned by reference - the following function creates a new array of 10 random numbers between 1 and 100 and passes it back as a reference <?php function &getRandArray() { $a = array(); for($i=0; $i<10; $i++) { $a[] = rand(1,100); } return($a); } $myNewArray = &getRandArray(); print_r($myNewArray); ?> • run example
PHP Functions (6): user defined functions - scope (1) - scoping is way of avoiding clashes between variables in different functions - each code block belongs to a certain scope - variables within functions have local scope and are private to the function - variables outside a function have a global scope <?php $a = 1; /* global scope */ function test(){ echo $a; /* reference to local scope variable */ } test(); ?> The above example will output nothing because the $a inside the function has local scope
PHP Functions (7): user defined functions - the global keyword can be used to access variables from the global scope within functions <?php $a = 1; $b = 2; function Sum(){ global $a, $b; $b = $a + $b; } Sum(); echo $b; ?> - The above script will output 3. By declaring $a and $b global within the function, all references to either variable will refer to the global version. There is no limit to the number of global variables that can be manipulated by a function. • run example
PHP Functions (8): user defined functions - arguments - functions expect arguments to to be preceded by a dollar sign ($) and these are usually passed to the function as values - if an argument has a & sign in front - it is treated as a reference - the following example shows an argument passed as reference <?php function stripCommas(&$text){ $text = str_replace(",", "", $text); } $myNumber = "10,000"; stripCommas($myNumber); print($myNumber); ?> • run example
PHP Functions (9): user defined functions • default values - a function can use a default value in an argument using the = sign to precede the argument - consider the following example <?php function setName($FirstName = "John", $LastName = "Smith"){ return "Hello, $FirstName $LastName!\n"; } ?> - So, to greet someone called John Smith, you could just use this: setName(); - To greet someone called Tom Davies, you would use this: setName("Tom", "Davies"); - To greet someone called Tom Smith, you would use this: setName("Tom");
Environment & other predefined variables (1) • PHP provides a large number of predefined variables to all scripts. • These variables represent everything from external variables to built-in environment variables, last error messages to last retrieved headers. $GLOBALS — References all variables available in global scope $_SERVER — Server and execution environment information $_GET — HTTP GET variables $_POST — HTTP POST variables $_FILES — HTTP File Upload variables $_REQUEST — HTTP Request variables $_SESSION — Session variables $_ENV — Environment variables $_COOKIE — HTTP Cookies $php_errormsg — The previous error message $HTTP_RAW_POST_DATA — Raw POST data $http_response_header — HTTP response headers $argc — The number of arguments passed to script $argv — Array of arguments passed to script
Environment & other predefined variables (2) • Some predefined variables are available to every script in every scope (both local and global) and these are referred to as Superglobals. • For these, there is no need to do global $variable; to access them within functions or methods. • The superglobals are: $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV
Environment & other predefined variables (3): the $_REQUEST, $_GET & $_POST globals • The most commonly used global variables are $_GET and $_POST which are used to send data from the browser to the server. • $_GET is an associative array (hash) that passes values to the current script using URL parameters. • - although the HTTP protocol does not set a limit to how long URL’s • can be – different browsers do – so it is considered good practice • not to send data that is more than 2000 characters with $_GET • - because the values of $_GET can be read in the URL – no data • containing sensitive information (like passwords) should be sent • using $_GET • - $_GET can't be used to send binary data, like images or word • documents, just textual data.
Environment & other predefined variables (4): $_GET example checks if either the ‘name’ or ‘age’ params. have values set <?php if(isset($_GET["name"]) || isset($_GET["age"])) { echo "<p>Welcome ". $_GET['name']. "<br/>"; echo "You are ". $_GET['age']. " years old.</p>"; exit(); } ?> <html> <body> <form action="<?php$_PHP_SELF ?>" method="GET"> Name: <input type="text" name="name" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html> $PHP_SELF returns path and name of current script html form with 3 inputs form method set to ‘GET’ view script run script ** Notice that once the form fields are filled in with values of say ‘Popeye’ and ‘83’, the URL shows as http://host/path/function_example_6.php?name=Popeye&age=83 i.e. the parameters are now part of the URL.
Environment & other predefined variables (5): $_POST & $_REQUEST • The POST method transfers information via HTTP headers. • - the POST method does not have any restriction on data size to be sent. • - it can be used to send ASCII as well as binary data. • - the data sent by POST method goes through HTTP header so security • depends on HTTP protocol. By using Secure HTTP (HTTPS) the data can • be secured (to a certain extent). • - PHP provides the $_POST associative array to access all the sent data • using the POST method. • ** Note that the example used in the previous slide can be easily changed to make use of the POST method by simply changing the method="GET"to method="POST". The parameters no longer appear in the URL. • $_REQUEST is an associative array (hash) that by default contains all of the contents of $_GET, $_POST and $_COOKIE together. ($_COOKIE superglobal will be discussed when we consider PHP sessions). view scriptrun script