Reader Level:
Articles

Polymorphism in PHP

By Sharad Gupta on January 31, 2013
In this article I describe polymorphism in PHP.
  • 0
  • 0
  • 4006

Introduction

Polymorphism is derived from two Greek words. Poly (meaning many) and morph (meaning forms). Polymorphism is one of the PHP Object Oriented Programming (OOP) features.  In general, polymorphism means the ability to have many forms. If we say it in other words, "Polymorphism describes a pattern in Object Oriented Programming in which a class has varying functionality while sharing a common interfaces.". There are two types of Polymorphism; they are:

  1. Compile time (function overloading)
     
  2. Run time (function overriding)

But PHP "does not support" compile time polymorphism, which means function overloading and operator overloading.

Runtime Polymorphism

The Runtime polymorphism means that a decision is made at runtime (not compile time) or we can say we can have multiple subtype implements for a super class, function overloading is an example of runtime polymorphism . I will first describe function overloading. When we create a function in a derived class with the same signature (in other words a function has the same name, the same number of arguments and the same type of arguments) as a function in its parent class then it is called method overriding.

Example of runtime polymorphism in PHP

In the example given below we created one base class called Shap. We have inherit the Shap class in three derived classes and the class names are Circle, Triangle and Ellipse. Each class includes function draw to do runtime polymorphism. In the calling process, we have created an array of length 2 and each index of the array is used to create an object of one class. After that we use a loop that is executed for the length of the array and each value of $i is passed to the object array variable called $Val[$i]. So it is executed three times and it will call the draw() method of every class (but those classes have a draw method, whose object is previously created).

<?
php
class
Shap
{

function
draw(){}
}

class
Circle extends Shap
{

function
draw()
{

print
"Circle has been drawn.</br>";
}
}

class
Triangle extends Shap
{

function
draw()
{

print
"Triangle has been drawn.</br>";
}
}

class
Ellipse extends Shap
{

function
draw()
{

print
"Ellipse has been drawn.";
}
}
 
$
Val=array(2);

$
Val[0]=new Circle();
$
Val[1]=new Triangle();
$
Val[2]=new Ellipse();

for($i=0;$i<3;$i++)

{

$Val[$i]->draw();

}

?>

Output

overriding-in-php.jpg

Sharad Gupta

Hi I am a Software developer working with different Microsoft technologies like ASP.NET 3.5/4.0, AJAX, JavaScript, J Query, Ms-access, SOL Server 2005/2008/2014,ADO.NET,Typescript also enamoured to learn different Micros... Read more

COMMENT USING

Trending up