You can include the content of a PHP file into another PHP file before the server executes it. There are two PHP functions which can be used to included one PHP file into another PHP file. This is a strong point of PHP which helps in creating functions, headers, footers, or elements that can be reused on multiple pages. This will help developers to make it easy to change the layout of complete website with minimal effort. If there is any change required then instead of changing thousand of files just change included file. The include() Function The include() function takes all the text in a specified file and copies it into the file that uses the include function. If there is any problem in loading a file then the include() function generates a warning but the script will continue execution. Assume you want to create a common menu for your website. Then create a file menu.php with the following content. Now create as many pages as you like and include this file to create header. For example now your test.php file can have following content. It will produce the following result − The require() Function The require() function takes all the text in a specified file and copies it into the file that uses the include function. If there is any problem in loading a file then the require() function generates a fatal error and halt the execution of the script. So there is no difference in require() and include() except they handle error conditions. It is recommended to use the require() function instead of include(), because scripts should not continue executing if files are missing or misnamed. You can try using above example with require() function and it will generate same result. But if you will try following two examples where file does not exist then you will get different results. This will produce the following result − Now lets try same example with require() function. This time file execution halts and nothing is displayed. NOTE − You may get plain warning messages or fatal error messages or nothing at all. This depends on your PHP Server configuration.
Complete Form
This chapter puts all the concepts of form validation and extraction of HTML form data into PHP code. The complete form handling code given below has three sections: A PHP code section in the beginning that looks for any validation errors when the form is submitted, the HTML form with various elements such as text fields, radio buttons, Select control, checkbox, etc. The third part is again a PHP code that renders the data entered by the user. PHP Error Tracking The code that traps errors, is in the beginning of the entire script. Obviously, this will be executed every time the page is loaded. If it’s being loaded after the form is submitted, the following segment checks whether each element is empty, the email field is well-formed, and the checkbox is clicked (indicating that the user agrees to the terms). HTML Form The HTML script that renders an entry form, follows the error trapping code. Various for elements have been employed in the form design. Note that the form data is submitted back to the same script, hence the form’s action attribute is set to $_SERVER[“PHP_SELF”] superglobal. This part also contains certain inline PHP code that flashes the error messages besides the respective form control – such as Name Required message just besides the Name text box, if the name field is empty while submitting the form. Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Display Form Data The third part of the script is again a PHP code that echoes the values of each of the form fields submitted by the user. Here’s the sample data filled in the form when the script is run from the server’s document root folder − When submitted, the output is rendered as below − Example The complete code of PHP’s handling HTML form is as follows − It will produce the following output −
Form Email/URL
PHP provides two alternatives for validating the form data items which are strings but are expected to be a representation of Email ID or a URL. One way to check the form element contains email/URL is with the use of RegEx (regular expressions), and the other, more convenient approach is to use filter_var() function. Let us apply both these methods and validate email and URL submitted by a form to a PHP script. The HTML Form used for this chapter is as follows − Open Compiler Validation with Regex PHP’s built-in function library includes the preg_match() function that performs a regular expression match. This function searches subject for a match to the regular expression given in pattern. preg_match() returns 1 if the pattern matches given subject, 0 if it does not, or false on failure. A valid email ID should satisfy the following regular expression − Similarly, a valid URL should satisfy the following regular expression − The following function returns “1” or “0” if the string is a valid email ID. Example Let us use the checkmail() function to check whether the email field in the above HTML is valid or not, with the help of following PHP code − The HTML form is rendered as below − Test the PHP code by entering valid/invalid email string in the email field. The following checkURL() function checks if a string represents a valid or invalid URL, and returns “1 or “0”. Example The URL field extracted from the $_POST array is given as argument to the above function. You can test the above code by entering URL string in the URL field of the above form. Using filter_var() function The built-in filter_var() function filters a variable with a specified filter. Depending on the enumerated filter ID as the value of $filter parameter, the $value parameter is checked and the function returns the filtered data, or false if the filter fails. There are various predefined filter ID constants available − Sr.No ID & Description 1 FILTER_VALIDATE_BOOLReturns true for “1”, “true”, “on” and “yes”. Returns false otherwise. 2 FILTER_VALIDATE_DOMAINValidates whether the domain name label lengths are valid. 3 FILTER_VALIDATE_EMAILValidates whether the value is a valid e-mail address. 4 FILTER_VALIDATE_IPValidates value as IP address 5 FILTER_VALIDATE_URLValidates value as URL Example The following PHP script validates the email and URL data submitted by the HTML for above − You can test the performance of the above script by entering valid/invalid email/URL.
Form Validation
The term “Form Validation” refers to the process of ascertaining if the data entered by the user in various form elements is acceptable for further processing. Validation of data before its subsequent processing avoids possible exceptions and runtime errors. Validation can be done both on the client-side and on the server-side. When the client submits the form, the form data is intercepted by the PHP script running on the server. Using various functions available in PHP, the server-side form validation can be done. Client-side Validation The new input controls as per the HTML5 specifications have in-built validation. For example an input element of the type ‘email’, even though is a text field, is customized to accept a string that is according to email address protocol. Validation takes place befor the data is submitted to the server. Same thing is true with other input types such as URL, number, etc. Example Given below is an HTML form with input elements of number type, email type and URL type. If you enter data that is not as per the required format, a suitable error message is flashed as you try to submit the form. Open Compiler The number type text field shows up/down counter arrows on the right. Only number is accepted, and can be incremented or decremented. If the data in email field is invalid, you get the error message flashed as below. Similarly, any incorrect format for the URL also flashes the error as shown − Validation Functions The validation on the server-side with PHP comes into picture, either when the form data passes the client-side validation, or there’s no validation on the client side at all. In the HTML form used in the above example, let us remove all special input types and use all text fields of text type. The form is submitted with POST method to hello.php on the server. Open Compiler Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Form is Empty If the user (may be inadvertently) clicks the submit button, you can ask PHP to display the form again. You need to check if the $_POST array has been initialized with isset() function. If not, the header() function redirects the control back to the form. Example You can also check if any of the fields is empty at the time of submitting the form. Age field is non-numeric In the HTML form the input field for name is of text type, hence it can accept any characters. However, we want it to be numeric. This can be ensured by is_numeric() function PHP also has is_string() function to check if a filed contains a string or not. Two other functions, trim() and htmlspecialchars() are also useful for form validation.
Form Handling
HTML Forms play an important role in PHP web applications. Although a webpage composed purely with HTML is a static webpage, the HTML form component is an important feature that helps in bringing interactivity and rendering dynamic content. PHP’s form handling functionality can validate data collected from the user, before processing. An HTML Form is a collection various form controls such as text fields, checkboxes, radio buttons, etc., with which the user can interact, enter or choose certain data that may be either locally processed by JavaScript (client-side processing), or sent to a remote server for processing with the help of server-side programming scripts such as PHP. One or more form control elements are put inside <form> and </form> tags. The form element is characterized by different attributes such as name, action, and method. Form Attributes Out of the many attributes of the HTML form element, the following attributes are often required and defined − Action Attribute a string representing the URL that processes the form submission. For example, http://example.com/test.php. To submit the for-data to the same PHP script in which the HTML form is defined, use the PHP_SELF server variable − Enctype Attribute specifies the method using which the form-data should be encoded before sending it to the server. Possible values are − Method Attribute a string representing the HTTP method to submit the form with. The following methods are the possible values of method attribute − Name Attribute The name of the form. The value must not be the empty string, and must be unique if there are multiple forms in the same HTML document. Target Attribute a string that indicates where to display the response after submitting the form. Should be one of the following − Hence, a typical HTML form, used in a PHP web application looks like − Form Elements A HTML form is designed with different types of controls or elements. The user can interact with these controls to enter data or choose from the available options presented. Some of the elements are described below − Input Element The input element represents a data field, which enables the user to enter and/or edit the data. The type attribute of INPUT element controls the data. The INPUT element may be of the following types − Text A text field to enter a single line text. Password A single line text filed that masks the entered characters. Checkbox A rectangular checkable box which is a set of zero or more values from a predefined list. Radio This type renders a round clickable button with two states (ON or OFF), usually a part of multiple buttons in a radio group. File The input type renders a button captioned file and allows the user to select a file from the client filesystem, usually to be uploaded on the server. The form’s enctype attribute must be set to “multipart/form-data” Email A single line text field, customized to accept a string conforming to valid email ID. URL A single line text filed customized to accept a string conforming to valid URL. Submit This input element renders a button, which when clicked, initiates the the submission of form data to the URL specified in the action attribute of the current form. Select Element The select element represents a control for selecting amongst a set of options. Each choice is defined with option attribute of Select Control. For example − Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Form Example Let us use these form elements to design a HTML form and send it to a PHP_SELF script It will produce the following output −
Web Concepts
PHP is a server-side scripting language that is used to create dynamic webpages. It is one of the most popular programming languages for web development. This chapter aims to let you get familiarized with certain important concepts of web application development using PHP. A web-based application is a collection of webpages. A webpage is mainly created with HTML tags. HTML consists of different HTML tags which are required to define the appearance of page elements like text, image, table, etc. Hence, HTML essentially creates a static webpage. A Web application is hosted on a HTTP server with PHP module installed. The browser acts as a http client, to establish communication with the server, following HTTP protocol. How to Add Dynamic Content on a Webpage? To add dynamic content io a webpage, there are two possibilities. JavaScript is a client-side scripting language, that can access the HTML document object model and render dynamic content on the client browser. JavaScript code can be embedded in HTML page. The browser may collect data from the user in the form of HTML form elements and send it to a HTTP server for processing. PHP is a widely used Server-side processing language. PHP script can also be embedded inside HTML page. Example In the following script, JavaScript code embedded in HTML renders the current date as per the client browser, and the PHP code displays the current date as per the server, where this script is hosted. Open Compiler PHP can intercept and process the data from HTML forms. This allows you to collect information from your users. The next chapter discusses PHP’s form handling. PHP can be used to interact with databases such as MySQL and PostgreSQL. This allows you to store and retrieve data from your database, and dynamically populate the web pages or to power the web applications. PHP includes mysql, mysqli and PDO extensions for database handling. PHP can handle the data received from the client with HTTP GET as well as POST methods. We shall discuss in detail, how PHP handles GET/POST methods in one of the latter chapters. HTTP is a stateless protocol. However, it allows Sessions and cookies to be maintained on server and client respectively. PHP can be used to create and manage sessions and cookies. Sessions allow you to track individual users as they navigate your website, while cookies allow you to store information on the user’s computer for later use. In of the subsequent chapters, we shall learn how PHP handles sessions and cookies. PHP can be used to upload files to your web server. This allows you to create web applications that allow users to upload files, such as images, videos, or documents. You can use PHP to create a login page for your website. When the user enters their username and password, PHP can check the database to see if the user is valid. If the user is valid, PHP can log the user in and redirect them to the main page of your website. Identifying Browser & Platform PHP creates some useful environment variables that can be seen in the phpinfo.php page that was used to setup the PHP environment. One of the environment variables set by PHP is HTTP_USER_AGENT which identifies the user’s browser and operating system. PHP provides a function getenv() to access the value of all the environment variables. The information contained in the HTTP_USER_AGENT environment variable can be used to create dynamic content appropriate to the browser. Example Following example demonstrates how you can identify a client browser and operating system. NOTE − The function preg_match()is discussed in PHP Regular expression session. This is producing following result on my machine. This result may be different for your computer depending on what you are using. It will produce the following result − Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Display Images Randomly The PHP rand() function is used to generate a random number.i This function can generate numbers with-in a given range. The random number generator should be seeded to prevent a regular pattern of numbers being generated. This is achieved using the srand() function that specifies the seed number as its argument. Example Following example demonstrates how you can display different image each time out of four images − Open Compiler It will produce the following result − Using HTML Forms The most important thing to notice when dealing with HTML forms and PHP is that any form element in an HTML page will automatically be available to your PHP scripts. Example Try out following example by putting the source code in test.php script. It will produce the following result − Browser Redirection The PHP header() function supplies raw HTTP headers to the browser and can be used to redirect it to another location. The redirection script should be at the very top of the page to prevent any other part of the page from loading. The target is specified by the Location: header as the argument to the header() function. After calling this function the exit() function can be used to halt parsing of rest of the code. Example Following example demonstrates how you can redirect a browser request to another web page. Try out this example by putting the source code in test.php script. Open Compiler It will produce the following result −
Anonymous Classes
The release of version 7.0 is an important milestone in the evolution of PHP language, when a lot of new features were introduced. The feature of Anonymous class was also made available in PHP version 7.0. As the term “anonymous” suggests, it is a class without a (programmer declared) name. The usual practice is to define a class with a certain identifier, so that it can be used repeatedly. The anonymous class, on the other hand is for one-time use only. Apart from this class not having a name, it is similar to a normal named class, in the sense it can contain properties and methods. Its functionality is no different from that of an object of a named class. An anonymous class might be used over a named class especially when the class does not need to be documented, and when the class is used only once during execution. Anonymous classes are useful when simple, one-off objects need to be created. Example In the following code, an anonymous class is instantiated and stored in $obj object. The class includes definitions of addition() and division() methods, which are called with the $obj object. Open Compiler It will produce the following output − Anonymous Class as a Child Class An anonymous class can do everything that a normal class can. It can extends another class, implement an interface or even use a trait. Example In the example below, the anonymous class is a child class, extending a parent already available. Open Compiler It will produce the following output − Example Although the anonymous class doesn’t have any user defined name, PHP does assign it an internal name, which can be obtained with the built-in get_class() function as follows − Open Compiler It will produce the following output − PHP parser assigns the internal name randomly.
Cloning Objects
A PHP statement such as “$obj1 = $obj2” merely creates another reference to the same object in memory. Hence, changes in attribute reflect both in original and duplicate object. The clone keyword in PHP creates a shallow copy of an object. Changes in the original object do not reflect in the shallow copy. Example Take a look at the following example − Open Compiler It will produce the following output − In the first case, $y is just a reference copy of $x. Hence, any change in var1 property reflects in both. However, if we declare $y as a clone of $x, then any change in the original object is not reflected in its shallow copy. Example Take a look at the following example − Open Compiler It will produce the following output − Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Example In the following code, myclass has one of attributes as object of address class. An object of myclass is duplicated by assignment. Any change in the value of its embedded address object is reflected in both the objects, but change in the name property is not effected in the cloned object. Open Compiler It will produce the following output − Using the “clone” Keyword In a shallow copy, any properties of the original object that are references to other variables will remain references. The clone keyword does not copy the contained objects of the copied objects. We now create a clone of myclass object, so that $obj2 is the clone of $obj1. We change the name property of $obj1 from Raja to Ravi, and also modify the embedded address object. The property change will not reflect in its clone, but the referred address object will be changed. Example Take a look at the following example − Open Compiler It will produce the following output − Using __clone() Method The clone keyword creates a shallow copy of the object. When an object is cloned, PHP will perform a shallow copy of all of the object’s properties. Any properties that are references to other variables will remain references. Hence, any changes done to the original object will also appear in the cloned object. If you wish to prevent the copied object to update automatically, we need to create a deep copy of the object with the __clone() method. It is one of the magic methods in PHP. Once the cloning is complete, if a __clone() method is defined, then the newly created object’s __clone() method will be called, to allow any necessary properties that need to be changed. Example In the above example, we have an object of myclass, one of its attributes $obj holding the reference to an object of address class. To achieve a deep copy, we override the __clone() magic method in myclass. Open Compiler You will now see that the changes in the original object (we change the address attributes) won’t reflect in the cloned object, as the following output shows −
Overloading
In C++ or Java, the term means a class can a class method of same name more than once but with different arguments and/or return type. In PHP, the term overloading has a different interpretation. It is a feature with which properties and methods can be created dynamically. PHP’s magic methods (method names starting with double underscore) are used to set up dynamic properties and methods. The magic methods used for the purpose of overloading are invoked when interacting with properties or methods that have not been declared or are not visible in the current scope. Property Overloading The examples of PHP’s magic methods are __construct(), __destruct(), __tostring(), etc. PHP uses the following magic methods for overloading properties. Here, The $name argument used above is the name of the property to be set or retrieved. The $value argument of __set() method specifies the value to be assigned to the property. The __isset() method checks if a certain property has been set or not. The __unset() method removes the property. Property overloading works only in object context. In any static context, these magic methods will not be triggered. Hence they should not be declared static. Example In the following code, a dynamic property named myprop, which is not declared in the class, is set and retrieved. Open Compiler It will produce the following output − The __set() and __get() magical methods also set and retrieve a property which is declared as private. Add the following statement inside myclass (before the function definitions) You can check if the property, define __isset() method in myclass − publicfunction__isset($name){returnisset($this->$name);} Check if the property is set with this statement − Which in this case returns true. To unset the dynamically created property with the __unset() method defined in myclass − The following code would return false − Method Overloading Two magic methods used to set methods dynamically are __call() and __callStatic(). The __call() is triggered when invoking inaccessible (not defined or private) methods in an object context. On the other hand, the __callStatic() is triggered when invoking inaccessible methods in a static context. Example The following example demonstrates method overloading in PHP Open Compiler It will produce the following output − Note that the use of “->” operator implies that the method is an instance method, and “::” operator means that the method is a static method.
The “Final” Keyword
The “final” keyword in PHP is used in the definition of a class, a method inside a class, as well as with the definition of a constant property of a class. A Class with “final” Keyword Let’s see how to create a class with the “final” keyword − The “final” keyword in class definition prevents such a class from being extended. In other words, you cannot use a final class as a parent. If you try, PHP parser throws an error Open Compiler When you run this code, it will show an error − Method with “final” Keyword Here is how you can create a method with the “final” keyword − Prefixing a method definition with the final keyword prevents it from being overridden in a child class. A class with final method can be extended, but the child class cannot override it. Example Take a look at the following example − Open Compiler When you run this code, it will show an error − Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career. Constant with “final” Keyword You can also declare a constant in a class with the final keyword, starting from PHP 8.1.0 onwards. If you try to override a final constant from parent class in a child class, an error is encountered. Open Compiler When you run this code, it will show an error − Example The following PHP script contains a parent class ellipse with a PI constant and area() method both declared as final. They are inherited by the circle class. The area() function calculates the area of circle. Open Compiler It will produce the following output − Note that the instance variables or properties of a class cannot be declared as final.