{"id":159,"date":"2018-07-12T10:31:06","date_gmt":"2018-07-12T10:31:06","guid":{"rendered":"http:\/\/itp9.epgpbooks.inflibnet.ac.in\/?post_type=chapter&#038;p=159"},"modified":"2018-12-07T10:52:53","modified_gmt":"2018-12-07T10:52:53","slug":"oop-iii-in-php","status":"publish","type":"chapter","link":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/chapter\/oop-iii-in-php\/","title":{"rendered":"OOP \u2013 III in PHP"},"content":{"raw":"<div><span style=\"float: right\"><a href=\"https:\/\/youtu.be\/sBxAkJENyCM\" target=\"_blank\" rel=\"noopener\"><img src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"epgp books\" width=\"75px\" height=\"75px;\" \/><\/a>\r\n<\/span><\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n<strong>Clone an object:<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Working with objects, it may be required to copy an object. To make a copy of an object, the assignment operator (=) is used. The assignments operator just creates a new reference to the same object. In other words, both the variables points to the same object. So, if you change the properties of one object, that will also change the properties of other object too.<\/p>\r\n&nbsp;\r\n\r\nLet us check it by example.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nclass Employee\r\n\r\n{\r\n\r\nprivate $eid, $ename; \/\/ properties of a class Employee\r\n\r\npublic function __construct($eid,$ename)\r\n\r\n{\r\n\r\n$this-&gt;eid = $eid;\r\n\r\n$this-&gt;ename = $ename;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/ Getter and setter to set properties of object\r\n\r\n&nbsp;\r\n\r\npublic function geteid() \/\/get method to get employeeid\r\n\r\n{\r\n\r\nreturn $this-&gt;eid;\r\n\r\n}\r\n\r\npublic function seteid($value) \/\/set method to set employeeid\r\n\r\n{\r\n\r\n$this-&gt;eid = $value;\r\n\r\n}\r\n\r\n<\/div>\r\n<div>\r\n\r\n\u00a0 \u00a0 \u00a0 \/\/getname\r\n\r\n&nbsp;\r\n\r\npublic function getename()\r\n\r\n{\r\n\r\nreturn $this-&gt;ename;\r\n\r\n}\r\n\r\npublic function setename($value)\r\n\r\n{\r\n\r\n$this-&gt;ename = $value;\r\n\r\n}\r\n\r\n}\r\n\r\n$obj1 = new Employee(101,'Vipul');\r\n\r\necho '&lt;br&gt; $obj1 is now : ';\r\n\r\nprint_r($obj1);\r\n\r\n$obj2 = new Employee(110,'Dhaval');\r\n\r\necho '&lt;br&gt; $obj2 is now : ';\r\n\r\nprint_r($obj2);\r\n\r\n$obj1 = $obj2;\r\n\r\necho '&lt;br&gt; after assignment operator now object 2 is &lt;br&gt;'; print_r($obj2);\r\n\r\necho '&lt;br&gt; after assignment operator now object 1 is &lt;br&gt;'; print_r($obj1);\r\n\r\necho \"&lt;br&gt; set name of obj2 to vimal &lt;br&gt;\";\r\n\r\n$obj2-&gt;setename('Vimal');\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj2 is after setname is: &lt;br&gt;\u00a0 ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj1 is after obj2 setname is: &lt;br&gt; ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThen the output will be:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">$obj1 is now : Employee Object ( [eid:Employee:private] =&gt; 101 [ename:Employee:private] =&gt; Vipul )<\/p>\r\n<p style=\"text-align: justify\">$obj2 is now : Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\r\n<p style=\"text-align: justify\">after assignment operator now object 2 is<\/p>\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\r\n<p style=\"text-align: justify\">after assignment operator now object 1 is<\/p>\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\r\n<p style=\"text-align: justify\">set name of obj2 to vimal<\/p>\r\n$obj2 is after setname is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )\r\n\r\n$obj1 is after obj2 setname is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )\r\n\r\n<\/div>\r\n&nbsp;\r\n<div>\r\n\r\n\u00a0 \u00a0 To copy the object, clone keyword is also used.\r\n\r\nThe syntax to clone an object is:\r\n\r\nclone &lt;objectName&gt;;\r\n\r\n&nbsp;\r\n\r\nPHP makes a shallow copy of an object when an object is copied.\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Shallow copy means it copies the memory location of an object. Changes in shallow copy is reflected on original object. To not create shallow copy, cloning of an object is required.<\/p>\r\n&nbsp;\r\n\r\nLet us understand the use of clone by example.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nclass Employee\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $eid, $ename; \/\/ properties of a class Employee<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($eid,$ename)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;ename = $ename;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/ Getter and setter to set properties of object<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function geteid()\u00a0 \/\/get method to get employeeid<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function seteid($value) \/\/set method to set employeeid<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/getname<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n\u00a0 \u00a0public function getename()\r\n\r\n{\r\n\r\nreturn $this-&gt;ename;\r\n\r\n}\r\n\r\npublic function setename($value)\r\n\r\n{\r\n\r\n$this-&gt;ename = $value;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj1 = new Employee(101,'Vipul');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj1 is now : ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj2 = new Employee(110,'Dhaval');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj2 is now : ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj1 = clone $obj2;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; after cloning now object 2 is &lt;br&gt;';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; after cloning now object 1 is &lt;br&gt;';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; set name of obj2 to vimal &lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj2-&gt;setename('Vimal');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj2 is after setname is: &lt;br&gt; ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj1 is after obj2 setname is: &lt;br&gt; ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj2-&gt;seteid(111);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj2 is after seteid is: &lt;br&gt; ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo '&lt;br&gt; $obj1 is after obj2 seteid is: &lt;br&gt; ';<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe output is:\r\n\r\n&nbsp;\r\n\r\n$obj1 is now : Employee Object ( [eid:Employee:private] =&gt; 101 [ename:Employee:private] =&gt; Vipul )\r\n\r\n$obj2 is now : Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )\r\n\r\nafter cloning now object 2 is\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )\r\n\r\nafter cloning now object 1 is\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )\r\n\r\nset name of obj2 to vimal\r\n\r\n&nbsp;\r\n\r\n$obj2 is after setname is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )\r\n\r\n$obj1 is after obj2 setname is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )\r\n\r\n$obj2 is after seteid is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 111 [ename:Employee:private] =&gt; Vimal )\r\n\r\n$obj1 is after obj2 seteid is:\r\n\r\nEmployee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n<strong>Inspecting an object<\/strong>\r\n<ul>\r\n \t<li style=\"text-align: justify\">Inspecting an object is also known as introspection or reflection<\/li>\r\n \t<li style=\"text-align: justify\">There are many methods available for reflection. You can find out these methods through the URL <a href=\"http:\/\/www.php.net\/manual\/en\/book.reflection.php\">http:\/\/www.php.net\/manual\/en\/book.reflection.php<\/a><\/li>\r\n \t<li style=\"text-align: justify\">The following table summarize few of the very useful methods to inspecting an object.<\/li>\r\n \t<li style=\"text-align: justify\">These methods are used to check whether an object parameter is of expected type or not.<\/li>\r\n \t<li style=\"text-align: justify\">These methods are also used to make sure that a property or method exists before it is called.<\/li>\r\n<\/ul>\r\n&nbsp;\r\n<table class=\"aligncenter\" border=\"1\">\r\n<tbody>\r\n<tr>\r\n<td><strong>Function<\/strong><\/td>\r\n<td><strong>Description<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>class_exists($class)<\/td>\r\n<td>Returns true if the $class is exists<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>get_class($object)<\/td>\r\n<td>Returns the class name of $object<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>is_a($object, $class)<\/td>\r\n<td>Returns true if $object is an instance of $class<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>property_exists($object, $property)<\/td>\r\n<td>Returns true if $property exists for $object<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>method_exists($object, $method)<\/td>\r\n<td>Returns true if $method exists for $object<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n&nbsp;\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nLet us write a PHP code for above functions.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nclass Employee\r\n\r\n{\r\n\r\nprivate $eid, $ename; \/\/ properties of a class Employee\r\n\r\npublic function __construct($eid,$ename)\r\n\r\n{\r\n\r\n$this-&gt;eid = $eid;\r\n\r\n$this-&gt;ename = $ename;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/ Getter and setter to set properties of object\r\n\r\n&nbsp;\r\n\r\npublic function geteid() \/\/get method to get employeeid\r\n\r\n{\r\n\r\nreturn $this-&gt;eid;\r\n\r\n}\r\n\r\npublic function seteid($value) \/\/set method to set employeeid\r\n\r\n{\r\n\r\n$this-&gt;eid = $value;\r\n\r\n}\r\n\r\npublic function getename()\r\n\r\n{\r\n\r\nreturn $this-&gt;ename;\r\n\r\n}\r\n\r\npublic function setename($value)\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;ename = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$obj = new Employee(1,'Abhay');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; is class Employee exists: \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/class_exists<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans1 = class_exists('Employee');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \" $ans1 \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/ get class<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans2 = get_class($obj);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; obj is object of class : $ans2\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/is_a<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans3 = is_a($obj,'Employee');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">if ($ans3 == true)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; obj is an object of class Employee \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">else<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; obj is not an object of class Employee\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/property_exists<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans4 = property_exists($obj,'eid');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">if ($ans4 == true)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; property eid exists for object obj \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">else<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; property eid does not exist for object obj \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/method_exists<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$ans5 = method_exists($obj,'geteid');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">if ($ans5 == true)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; method geteid exists for object obj \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">else<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt; method geteid does not exist for object obj \";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe output of the above programmer is:\r\n\r\n&nbsp;\r\n\r\nis class Employee exists: 1\r\n\r\nobj is object of class : Employee\r\n\r\nobj is an object of class Employee\r\n\r\nproperty eid exists for object obj\r\n\r\nmethod geteid exists for object obj\r\n\r\n&nbsp;\r\n\r\n<strong>Inheritance<\/strong>\r\n<ul>\r\n \t<li style=\"text-align: justify\">Inheritance is one of the essential concepts in Object Oriented Programing.<\/li>\r\n \t<li style=\"text-align: justify\">Inheritance allows developer to create a new class based on existing class.<\/li>\r\n \t<li style=\"text-align: justify\">The new class inherits all the properties and methods of class which is inherited.<\/li>\r\n \t<li style=\"text-align: justify\">The class which is inherited from the class is known as subclass or derived class or child class.<\/li>\r\n \t<li style=\"text-align: justify\">The class which is inherited by other class is known as superclass or base class or parent class.<\/li>\r\n \t<li style=\"text-align: justify\">The subclass can extend the inheritance by adding new properties and methods.<\/li>\r\n \t<li style=\"text-align: justify\">The subclass can override a method of the superclass. Method overriding means subclass use the same method name defined in super class.<\/li>\r\n \t<li style=\"text-align: justify\">A subclass can call a method of superclass. To call a super class method in subclass use the parent keyword then type :: (double colon) and then type the method name. The parent keyword refer to the super class.<\/li>\r\n \t<li style=\"text-align: justify\">Inheritance provide reusability of code.<\/li>\r\n \t<li style=\"text-align: justify\">Inheritance is used by the developers to develop consistent classes for large application.<\/li>\r\n<\/ul>\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\nThe following code demonstrate an example of inheritance.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\nclass Person\r\n\r\n{\r\n\r\nprivate $fname,$lname,$email,$mobile;\r\n\r\npublic function __construct($fname,$lname)\r\n\r\n{\r\n\r\n$this-&gt;fname = $fname;\r\n\r\n$this-&gt;lname = $lname;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/fname\r\n\r\npublic function getfname()\r\n\r\n{\r\n\r\nreturn $this-&gt;fname;\r\n\r\n}\r\n\r\npublic function setfname($value)\r\n\r\n{\r\n\r\n$this-&gt;fname = $value;\r\n\r\n}\r\n\r\n<\/div>\r\n<span style=\"text-align: initial;font-size: 1em\">\u00a0 \u00a0\/\/lname<\/span>\r\n<div>\r\n\r\n&nbsp;\r\n\r\npublic function getlname()\r\n\r\n{\r\n\r\nreturn $this-&gt;lname;\r\n\r\n}\r\n\r\npublic function setlname($value)\r\n\r\n{\r\n\r\n$this-&gt;lname = $value;\r\n\r\n}\r\n\r\n\/\/email\r\n\r\npublic function getemail()\r\n\r\n{\r\n\r\nreturn $this-&gt;email;\r\n\r\n}\r\n\r\npublic function setemail($value)\r\n\r\n{\r\n\r\n$this-&gt;email = $value;\r\n\r\n}\r\n\r\n\/\/mobile\r\n\r\npublic function getmobile()\r\n\r\n{\r\n\r\nreturn $this-&gt;mobile;\r\n\r\n}\r\n\r\npublic function setmobile($value)\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp = new Employee('first','last',1,'IT');<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">echo \"&lt;br&gt;\";<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">Then the output will be:<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; ) Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; 1234567890 )<\/p>\r\n&nbsp;\r\n\r\n<strong>Access Modifier<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">The subclass inherits all the public and protected properties and methods while it cannot inherits private properties and methods.<\/p>\r\n&nbsp;\r\n\r\nFollowing table shows how the access modifier works\r\n\r\n&nbsp;\r\n<table class=\"aligncenter\" border=\"1\">\r\n<tbody>\r\n<tr>\r\n<td rowspan=\"2\"><strong>Modifier<\/strong>\r\n\r\n&nbsp;<\/td>\r\n<td rowspan=\"2\"><strong>Access outside the<\/strong>\r\n\r\n<strong>class?<\/strong><\/td>\r\n<td rowspan=\"2\"><strong>Access from<\/strong>\r\n\r\n<strong>Subclass?<\/strong><\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Public<\/td>\r\n<td>Yes<\/td>\r\n<td>Yes<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Protected<\/td>\r\n<td>No<\/td>\r\n<td>Yes<\/td>\r\n<\/tr>\r\n<tr>\r\n<td>Private<\/td>\r\n<td>No<\/td>\r\n<td>No<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\nFollowing code show the use of protected access\u00a0 modifier.\r\n\r\n&nbsp;\r\n\r\n&lt;?php\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Person<\/span>\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">protected $fname,$lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $email,$mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $fname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/fname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getfname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;fname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n&nbsp;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span>\r\n\r\n{\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">{<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span>\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<\/div>\r\n<div>\r\n\r\n&nbsp;\r\n\r\n\/\/eid\r\n\r\n&nbsp;\r\n\r\npublic function geteid()\r\n\r\n{\r\n\r\nreturn $this-&gt;eid;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\npublic function seteid($value)\r\n\r\n{\r\n\r\n$this-&gt;eid = $value;\r\n\r\n}\r\n\r\n&nbsp;\r\n\r\n\/\/edept\r\n\r\n&nbsp;\r\n\r\npublic function getdept()\r\n\r\n{\r\n\r\nreturn $this-&gt;edept;\r\n\r\n}\r\n\r\npublic function setedept($value)\r\n\r\n{\r\n\r\n$this-&gt;edept = $value;\r\n\r\n<span style=\"text-align: initial;font-size: 1em\">}<\/span>\r\n\r\n<\/div>\r\n\/\/fullname\r\n\r\n&nbsp;\r\n\r\npublic function getfullname()\r\n\r\n{\r\n\r\nreturn $this-&gt;fname.' '.$this-&gt;lname;\r\n\r\n}\r\n\r\n}\r\n\r\n$emp = new Employee('first','last',1,'IT');\r\n\r\nprint_r($emp);\r\n\r\n$emp-&gt;setmobile(1234567890);\r\n\r\necho \"&lt;br&gt;\";\r\n\r\nprint_r($emp);\r\n\r\n$full = $emp-&gt;getfullname();\r\n\r\necho \"&lt;h1&gt; $full\";\r\n\r\n?&gt;\r\n\r\n&nbsp;\r\n\r\nThe output will be:\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:protected] =&gt; first [lname:protected] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; )<\/p>\r\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:protected] =&gt; first [lname:protected] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; 1234567890 ) first last<\/p>\r\n<table>\r\n<tbody>\r\n<tr>\r\n<td><strong>you can view video on OOP \u2013 III in PHP<\/strong><\/td>\r\n<td><a href=\"https:\/\/youtu.be\/sBxAkJENyCM\" target=\"_blank\" rel=\"noopener\"><img class=\"alignnone wp-image-120\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"\" width=\"36\" height=\"36\" \/><\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n\r\n<strong>Reference:<\/strong>\r\n\r\n&nbsp;\r\n<p style=\"text-align: justify\">1. Luke Welling, Laura Thomson: PHP and MySQL Web Development, Pearson,<\/p>\r\n<p style=\"text-align: justify\">2. W. Jason Gilmore: Beginning PHP and MySQL 5 From Novice to Professional,Apress<\/p>\r\n<p style=\"text-align: justify\">3. Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz, Michael K.Glass: Beginning PHP5, Apache, and MySQL Web Development, Wrox,<\/p>\r\n<p style=\"text-align: justify\">4. Robin Nixon: Learning PHP, MySQL, and JavaScript, O'Reilly Media<\/p>\r\n<p style=\"text-align: justify\">5. Ed Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove:Professional PHP, Wrox<\/p>\r\n<p style=\"text-align: justify\">6. Tim Converse, Joyce Park, Clark Morgan: PHP5 and MySQL Bible<\/p>\r\n<p style=\"text-align: justify\">7. Joel Murach, Ray Harris: Murach\u2019s PHP and MySQL, Shroff\/Murach<\/p>\r\n<p style=\"text-align: justify\">8. Ivan Bayross, Web Enabled Commercial Application Development Using HTML\/Javascript\/DHTML\/PHP , BPB Publications<\/p>\r\n<p style=\"text-align: justify\">9. Julie C. Meloni, Sams Teach Yourself PHP, MySQL and Apache All in One, Sams<\/p>\r\n<p style=\"text-align: justify\">10. Larry Ullman, PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide,Pearson Education<\/p>\r\n<p style=\"text-align: justify\">11. http:\/\/www.php.net<\/p>\r\n<p style=\"text-align: justify\">12. http:\/\/www.w3schools.com\/<\/p>\r\n<p style=\"text-align: justify\">13. http:\/\/www.tutorialspoint.com\/<\/p>\r\n<p style=\"text-align: justify\">14. https:\/\/docs.oracle.com\/javase\/tutorial\/java\/concepts\/<\/p>\r\n<p style=\"text-align: justify\">15. http:\/\/www.tutorialspoint.com\/cplusplus\/cpp_object_oriented.htm<\/p>\r\n<p style=\"text-align: justify\">16. http:\/\/www.tutorialspoint.com\/php\/php_object_oriented.htm<\/p>\r\n<p style=\"text-align: justify\">17. http:\/\/inchoo.net\/dev-talk\/understanding-phps-oop-basic-terms-explained\/<\/p>","rendered":"<div><span style=\"float: right\"><a href=\"https:\/\/youtu.be\/sBxAkJENyCM\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"epgp books\" width=\"75px\" height=\"75px;\" \/><\/a><br \/>\n<\/span><\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Clone an object:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Working with objects, it may be required to copy an object. To make a copy of an object, the assignment operator (=) is used. The assignments operator just creates a new reference to the same object. In other words, both the variables points to the same object. So, if you change the properties of one object, that will also change the properties of other object too.<\/p>\n<p>&nbsp;<\/p>\n<p>Let us check it by example.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>class Employee<\/p>\n<p>{<\/p>\n<p>private $eid, $ename; \/\/ properties of a class Employee<\/p>\n<p>public function __construct($eid,$ename)<\/p>\n<p>{<\/p>\n<p>$this-&gt;eid = $eid;<\/p>\n<p>$this-&gt;ename = $ename;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/ Getter and setter to set properties of object<\/p>\n<p>&nbsp;<\/p>\n<p>public function geteid() \/\/get method to get employeeid<\/p>\n<p>{<\/p>\n<p>return $this-&gt;eid;<\/p>\n<p>}<\/p>\n<p>public function seteid($value) \/\/set method to set employeeid<\/p>\n<p>{<\/p>\n<p>$this-&gt;eid = $value;<\/p>\n<p>}<\/p>\n<\/div>\n<div>\n<p>\u00a0 \u00a0 \u00a0 \/\/getname<\/p>\n<p>&nbsp;<\/p>\n<p>public function getename()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;ename;<\/p>\n<p>}<\/p>\n<p>public function setename($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;ename = $value;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>$obj1 = new Employee(101,&#8217;Vipul&#8217;);<\/p>\n<p>echo &#8216;&lt;br&gt; $obj1 is now : &#8216;;<\/p>\n<p>print_r($obj1);<\/p>\n<p>$obj2 = new Employee(110,&#8217;Dhaval&#8217;);<\/p>\n<p>echo &#8216;&lt;br&gt; $obj2 is now : &#8216;;<\/p>\n<p>print_r($obj2);<\/p>\n<p>$obj1 = $obj2;<\/p>\n<p>echo &#8216;&lt;br&gt; after assignment operator now object 2 is &lt;br&gt;&#8217;; print_r($obj2);<\/p>\n<p>echo &#8216;&lt;br&gt; after assignment operator now object 1 is &lt;br&gt;&#8217;; print_r($obj1);<\/p>\n<p>echo &#8220;&lt;br&gt; set name of obj2 to vimal &lt;br&gt;&#8221;;<\/p>\n<p>$obj2-&gt;setename(&#8216;Vimal&#8217;);<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj2 is after setname is: &lt;br&gt;\u00a0 &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj1 is after obj2 setname is: &lt;br&gt; &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>Then the output will be:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">$obj1 is now : Employee Object ( [eid:Employee:private] =&gt; 101 [ename:Employee:private] =&gt; Vipul )<\/p>\n<p style=\"text-align: justify\">$obj2 is now : Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p style=\"text-align: justify\">after assignment operator now object 2 is<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p style=\"text-align: justify\">after assignment operator now object 1 is<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p style=\"text-align: justify\">set name of obj2 to vimal<\/p>\n<p>$obj2 is after setname is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )<\/p>\n<p>$obj1 is after obj2 setname is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )<\/p>\n<\/div>\n<p>&nbsp;<\/p>\n<div>\n<p>\u00a0 \u00a0 To copy the object, clone keyword is also used.<\/p>\n<p>The syntax to clone an object is:<\/p>\n<p>clone &lt;objectName&gt;;<\/p>\n<p>&nbsp;<\/p>\n<p>PHP makes a shallow copy of an object when an object is copied.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Shallow copy means it copies the memory location of an object. Changes in shallow copy is reflected on original object. To not create shallow copy, cloning of an object is required.<\/p>\n<p>&nbsp;<\/p>\n<p>Let us understand the use of clone by example.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>class Employee<\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $eid, $ename; \/\/ properties of a class Employee<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($eid,$ename)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;ename = $ename;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/ Getter and setter to set properties of object<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function geteid()\u00a0 \/\/get method to get employeeid<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function seteid($value) \/\/set method to set employeeid<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/getname<\/span><\/p>\n<\/div>\n<div>\n<p>\u00a0 \u00a0public function getename()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;ename;<\/p>\n<p>}<\/p>\n<p>public function setename($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;ename = $value;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj1 = new Employee(101,&#8217;Vipul&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj1 is now : &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj2 = new Employee(110,&#8217;Dhaval&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj2 is now : &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj1 = clone $obj2;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; after cloning now object 2 is &lt;br&gt;&#8217;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; after cloning now object 1 is &lt;br&gt;&#8217;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; set name of obj2 to vimal &lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj2-&gt;setename(&#8216;Vimal&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj2 is after setname is: &lt;br&gt; &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj1 is after obj2 setname is: &lt;br&gt; &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj2-&gt;seteid(111);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj2 is after seteid is: &lt;br&gt; &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj2);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8216;&lt;br&gt; $obj1 is after obj2 seteid is: &lt;br&gt; &#8216;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($obj1);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>The output is:<\/p>\n<p>&nbsp;<\/p>\n<p>$obj1 is now : Employee Object ( [eid:Employee:private] =&gt; 101 [ename:Employee:private] =&gt; Vipul )<\/p>\n<p>$obj2 is now : Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p>after cloning now object 2 is<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p>after cloning now object 1 is<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p>set name of obj2 to vimal<\/p>\n<p>&nbsp;<\/p>\n<p>$obj2 is after setname is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Vimal )<\/p>\n<p>$obj1 is after obj2 setname is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<p>$obj2 is after seteid is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 111 [ename:Employee:private] =&gt; Vimal )<\/p>\n<p>$obj1 is after obj2 seteid is:<\/p>\n<p>Employee Object ( [eid:Employee:private] =&gt; 110 [ename:Employee:private] =&gt; Dhaval )<\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p><strong>Inspecting an object<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify\">Inspecting an object is also known as introspection or reflection<\/li>\n<li style=\"text-align: justify\">There are many methods available for reflection. You can find out these methods through the URL <a href=\"http:\/\/www.php.net\/manual\/en\/book.reflection.php\">http:\/\/www.php.net\/manual\/en\/book.reflection.php<\/a><\/li>\n<li style=\"text-align: justify\">The following table summarize few of the very useful methods to inspecting an object.<\/li>\n<li style=\"text-align: justify\">These methods are used to check whether an object parameter is of expected type or not.<\/li>\n<li style=\"text-align: justify\">These methods are also used to make sure that a property or method exists before it is called.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<table class=\"aligncenter\">\n<tbody>\n<tr>\n<td><strong>Function<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td>class_exists($class)<\/td>\n<td>Returns true if the $class is exists<\/td>\n<\/tr>\n<tr>\n<td>get_class($object)<\/td>\n<td>Returns the class name of $object<\/td>\n<\/tr>\n<tr>\n<td>is_a($object, $class)<\/td>\n<td>Returns true if $object is an instance of $class<\/td>\n<\/tr>\n<tr>\n<td>property_exists($object, $property)<\/td>\n<td>Returns true if $property exists for $object<\/td>\n<\/tr>\n<tr>\n<td>method_exists($object, $method)<\/td>\n<td>Returns true if $method exists for $object<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>Let us write a PHP code for above functions.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>class Employee<\/p>\n<p>{<\/p>\n<p>private $eid, $ename; \/\/ properties of a class Employee<\/p>\n<p>public function __construct($eid,$ename)<\/p>\n<p>{<\/p>\n<p>$this-&gt;eid = $eid;<\/p>\n<p>$this-&gt;ename = $ename;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/ Getter and setter to set properties of object<\/p>\n<p>&nbsp;<\/p>\n<p>public function geteid() \/\/get method to get employeeid<\/p>\n<p>{<\/p>\n<p>return $this-&gt;eid;<\/p>\n<p>}<\/p>\n<p>public function seteid($value) \/\/set method to set employeeid<\/p>\n<p>{<\/p>\n<p>$this-&gt;eid = $value;<\/p>\n<p>}<\/p>\n<p>public function getename()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;ename;<\/p>\n<p>}<\/p>\n<p>public function setename($value)<\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;ename = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$obj = new Employee(1,&#8217;Abhay&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; is class Employee exists: &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/class_exists<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans1 = class_exists(&#8216;Employee&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8221; $ans1 &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/ get class<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans2 = get_class($obj);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; obj is object of class : $ans2&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/is_a<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans3 = is_a($obj,&#8217;Employee&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">if ($ans3 == true)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; obj is an object of class Employee &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">else<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; obj is not an object of class Employee&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/property_exists<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans4 = property_exists($obj,&#8217;eid&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">if ($ans4 == true)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; property eid exists for object obj &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">else<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; property eid does not exist for object obj &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/method_exists<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$ans5 = method_exists($obj,&#8217;geteid&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">if ($ans5 == true)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; method geteid exists for object obj &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">else<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt; method geteid does not exist for object obj &#8220;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>The output of the above programmer is:<\/p>\n<p>&nbsp;<\/p>\n<p>is class Employee exists: 1<\/p>\n<p>obj is object of class : Employee<\/p>\n<p>obj is an object of class Employee<\/p>\n<p>property eid exists for object obj<\/p>\n<p>method geteid exists for object obj<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Inheritance<\/strong><\/p>\n<ul>\n<li style=\"text-align: justify\">Inheritance is one of the essential concepts in Object Oriented Programing.<\/li>\n<li style=\"text-align: justify\">Inheritance allows developer to create a new class based on existing class.<\/li>\n<li style=\"text-align: justify\">The new class inherits all the properties and methods of class which is inherited.<\/li>\n<li style=\"text-align: justify\">The class which is inherited from the class is known as subclass or derived class or child class.<\/li>\n<li style=\"text-align: justify\">The class which is inherited by other class is known as superclass or base class or parent class.<\/li>\n<li style=\"text-align: justify\">The subclass can extend the inheritance by adding new properties and methods.<\/li>\n<li style=\"text-align: justify\">The subclass can override a method of the superclass. Method overriding means subclass use the same method name defined in super class.<\/li>\n<li style=\"text-align: justify\">A subclass can call a method of superclass. To call a super class method in subclass use the parent keyword then type :: (double colon) and then type the method name. The parent keyword refer to the super class.<\/li>\n<li style=\"text-align: justify\">Inheritance provide reusability of code.<\/li>\n<li style=\"text-align: justify\">Inheritance is used by the developers to develop consistent classes for large application.<\/li>\n<\/ul>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>The following code demonstrate an example of inheritance.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p>class Person<\/p>\n<p>{<\/p>\n<p>private $fname,$lname,$email,$mobile;<\/p>\n<p>public function __construct($fname,$lname)<\/p>\n<p>{<\/p>\n<p>$this-&gt;fname = $fname;<\/p>\n<p>$this-&gt;lname = $lname;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/fname<\/p>\n<p>public function getfname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;fname;<\/p>\n<p>}<\/p>\n<p>public function setfname($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;fname = $value;<\/p>\n<p>}<\/p>\n<\/div>\n<p><span style=\"text-align: initial;font-size: 1em\">\u00a0 \u00a0\/\/lname<\/span><\/p>\n<div>\n<p>&nbsp;<\/p>\n<p>public function getlname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;lname;<\/p>\n<p>}<\/p>\n<p>public function setlname($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;lname = $value;<\/p>\n<p>}<\/p>\n<p>\/\/email<\/p>\n<p>public function getemail()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;email;<\/p>\n<p>}<\/p>\n<p>public function setemail($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;email = $value;<\/p>\n<p>}<\/p>\n<p>\/\/mobile<\/p>\n<p>public function getmobile()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;mobile;<\/p>\n<p>}<\/p>\n<p>public function setmobile($value)<\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/eid<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function geteid()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function seteid($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/edept<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getdept()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setedept($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp = new Employee(&#8216;first&#8217;,&#8217;last&#8217;,1,&#8217;IT&#8217;);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$emp-&gt;setmobile(1234567890);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">echo &#8220;&lt;br&gt;&#8221;;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">print_r($emp);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">?&gt;<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">Then the output will be:<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; ) Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:Person:private] =&gt; first [lname:Person:private] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; 1234567890 )<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Access Modifier<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">The subclass inherits all the public and protected properties and methods while it cannot inherits private properties and methods.<\/p>\n<p>&nbsp;<\/p>\n<p>Following table shows how the access modifier works<\/p>\n<p>&nbsp;<\/p>\n<table class=\"aligncenter\">\n<tbody>\n<tr>\n<td rowspan=\"2\"><strong>Modifier<\/strong><\/p>\n<p>&nbsp;<\/td>\n<td rowspan=\"2\"><strong>Access outside the<\/strong><\/p>\n<p><strong>class?<\/strong><\/td>\n<td rowspan=\"2\"><strong>Access from<\/strong><\/p>\n<p><strong>Subclass?<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Public<\/td>\n<td>Yes<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Protected<\/td>\n<td>No<\/td>\n<td>Yes<\/td>\n<\/tr>\n<tr>\n<td>Private<\/td>\n<td>No<\/td>\n<td>No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Following code show the use of protected access\u00a0 modifier.<\/p>\n<p>&nbsp;<\/p>\n<p>&lt;?php<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Person<\/span><\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">protected $fname,$lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $email,$mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname,$lname)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $fname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/fname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getfname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;fname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setfname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;fname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/lname<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getlname()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;lname;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setlname($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;lname = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/email<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getemail()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;email;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setemail($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;email = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">\/\/mobile<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function getmobile()<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">return $this-&gt;mobile;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function setmobile($value)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;mobile = $value;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">class Employee extends Person<\/span><\/p>\n<p>{<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">private $eid, $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">public function __construct($fname, $lname,$eid,$edept)<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">{<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;eid = $eid;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">$this-&gt;edept = $edept;<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">parent::__construct($fname,$lname);<\/span><\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<\/div>\n<div>\n<p>&nbsp;<\/p>\n<p>\/\/eid<\/p>\n<p>&nbsp;<\/p>\n<p>public function geteid()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;eid;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>public function seteid($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;eid = $value;<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/edept<\/p>\n<p>&nbsp;<\/p>\n<p>public function getdept()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;edept;<\/p>\n<p>}<\/p>\n<p>public function setedept($value)<\/p>\n<p>{<\/p>\n<p>$this-&gt;edept = $value;<\/p>\n<p><span style=\"text-align: initial;font-size: 1em\">}<\/span><\/p>\n<\/div>\n<p>\/\/fullname<\/p>\n<p>&nbsp;<\/p>\n<p>public function getfullname()<\/p>\n<p>{<\/p>\n<p>return $this-&gt;fname.&#8217; &#8216;.$this-&gt;lname;<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>$emp = new Employee(&#8216;first&#8217;,&#8217;last&#8217;,1,&#8217;IT&#8217;);<\/p>\n<p>print_r($emp);<\/p>\n<p>$emp-&gt;setmobile(1234567890);<\/p>\n<p>echo &#8220;&lt;br&gt;&#8221;;<\/p>\n<p>print_r($emp);<\/p>\n<p>$full = $emp-&gt;getfullname();<\/p>\n<p>echo &#8220;&lt;h1&gt; $full&#8221;;<\/p>\n<p>?&gt;<\/p>\n<p>&nbsp;<\/p>\n<p>The output will be:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:protected] =&gt; first [lname:protected] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; )<\/p>\n<p style=\"text-align: justify\">Employee Object ( [eid:Employee:private] =&gt; 1 [edept:Employee:private] =&gt; IT [fname:protected] =&gt; first [lname:protected] =&gt; last [email:Person:private] =&gt; [mobile:Person:private] =&gt; 1234567890 ) first last<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>you can view video on OOP \u2013 III in PHP<\/strong><\/td>\n<td><a href=\"https:\/\/youtu.be\/sBxAkJENyCM\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-120\" src=\"http:\/\/epgpbooks.inflibnet.ac.in\/wp-content\/uploads\/2018\/11\/download.png\" alt=\"\" width=\"36\" height=\"36\" \/><\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Reference:<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify\">1. Luke Welling, Laura Thomson: PHP and MySQL Web Development, Pearson,<\/p>\n<p style=\"text-align: justify\">2. W. Jason Gilmore: Beginning PHP and MySQL 5 From Novice to Professional,Apress<\/p>\n<p style=\"text-align: justify\">3. Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz, Michael K.Glass: Beginning PHP5, Apache, and MySQL Web Development, Wrox,<\/p>\n<p style=\"text-align: justify\">4. Robin Nixon: Learning PHP, MySQL, and JavaScript, O&#8217;Reilly Media<\/p>\n<p style=\"text-align: justify\">5. Ed Lecky-Thompson, Heow Eide-Goodman, Steven D. Nowicki, Alec Cove:Professional PHP, Wrox<\/p>\n<p style=\"text-align: justify\">6. Tim Converse, Joyce Park, Clark Morgan: PHP5 and MySQL Bible<\/p>\n<p style=\"text-align: justify\">7. Joel Murach, Ray Harris: Murach\u2019s PHP and MySQL, Shroff\/Murach<\/p>\n<p style=\"text-align: justify\">8. Ivan Bayross, Web Enabled Commercial Application Development Using HTML\/Javascript\/DHTML\/PHP , BPB Publications<\/p>\n<p style=\"text-align: justify\">9. Julie C. Meloni, Sams Teach Yourself PHP, MySQL and Apache All in One, Sams<\/p>\n<p style=\"text-align: justify\">10. Larry Ullman, PHP and MySQL for Dynamic Web Sites: Visual QuickPro Guide,Pearson Education<\/p>\n<p style=\"text-align: justify\">11. http:\/\/www.php.net<\/p>\n<p style=\"text-align: justify\">12. http:\/\/www.w3schools.com\/<\/p>\n<p style=\"text-align: justify\">13. http:\/\/www.tutorialspoint.com\/<\/p>\n<p style=\"text-align: justify\">14. https:\/\/docs.oracle.com\/javase\/tutorial\/java\/concepts\/<\/p>\n<p style=\"text-align: justify\">15. http:\/\/www.tutorialspoint.com\/cplusplus\/cpp_object_oriented.htm<\/p>\n<p style=\"text-align: justify\">16. http:\/\/www.tutorialspoint.com\/php\/php_object_oriented.htm<\/p>\n<p style=\"text-align: justify\">17. http:\/\/inchoo.net\/dev-talk\/understanding-phps-oop-basic-terms-explained\/<\/p>\n","protected":false},"author":3,"menu_order":12,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":["dr-hiren-joshi"],"pb_section_license":""},"chapter-type":[],"contributor":[59],"license":[],"class_list":["post-159","chapter","type-chapter","status-publish","hentry","contributor-dr-hiren-joshi"],"part":3,"_links":{"self":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":8,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/159\/revisions"}],"predecessor-version":[{"id":487,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/159\/revisions\/487"}],"part":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/parts\/3"}],"metadata":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapters\/159\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/media?parent=159"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/pressbooks\/v2\/chapter-type?post=159"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/contributor?post=159"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/ebooks.inflibnet.ac.in\/itp9\/wp-json\/wp\/v2\/license?post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}