Abstract Class in PHP

In the dynamic world of PHP, abstract classes stand tall as powerful tools that allow developers to lay the groundwork for flexible and robust object-oriented programming (OOP) designs. These unique classes enable the creation of blueprints for other classes, fostering code reusability and promoting a structured development approach. In this article, we will delve into the realm of abstract classes in PHP, understanding their significance, exploring their key features, and engaging with practical examples to grasp their true potential.

In case you do not have any idea about Method Overriding. Please click here to learn about Method Overriding in PHP.

Unravelling Abstract Classes:

An abstract class in PHP serves as a blueprint for other classes and cannot be instantiated on its own. It provides a foundation for its child classes to inherit, defining common attributes and method signatures. Unlike regular classes, abstract classes may contain both abstract and concrete methods, allowing developers to establish a structure that enforces consistent behaviour across the child classes.

Declaring Abstract Classes in PHP:

Let's explore the process of creating an abstract class in PHP through an illustrative example. Consider a scenario where we want to build a shape hierarchy with an abstract class called Shape, encompassing the fundamental properties and methods for various shapes.

abstract class Shape {
    protected $color;

    public function __construct($color) {
        $this->color = $color;

    abstract public function calculateArea();
    abstract public function calculatePerimeter();

    public function getColor() {
        return $this->color;

In the example above, we defined the Shape abstract class with an abstract method calculateArea() and calculatePerimeter(). Child classes extending this abstract class must provide concrete implementations for these abstract methods.

Implementing Abstract Classes:

To continue our example, let's create concrete classes Circle and Rectangle that extend the Shape abstract class.

class Circle extends Shape {
    private $radius;

    public function __construct($color, $radius) {
        $this->radius = $radius;

    public function calculateArea() {
        return pi() * pow($this->radius, 2);

    public function calculatePerimeter() {
        return 2 * pi() * $this->radius;

class Rectangle extends Shape {
    private $length;
    private $width;

    public function __construct($color, $length, $width) {
        $this->length = $length;
        $this->width = $width;

    public function calculateArea() {
        return $this->length * $this->width;

    public function calculatePerimeter() {
        return 2 * ($this->length + $this->width);

Advantages of Abstract class:

  • Code Reusability: Abstract classes promote code reusability by allowing developers to define common methods and attributes in one central location, shared across multiple subclasses.
  • Consistent Interfaces: By enforcing the implementation of abstract methods in child classes, abstract classes ensure a consistent interface, guaranteeing that certain functionalities are available in all derived classes.
  • Clear Hierarchy: Abstract classes contribute to a clear and organized class hierarchy, facilitating better understanding and maintenance of the codebase.


Abstract classes in PHP provide a solid foundation for developers to build scalable and organized object-oriented applications. By creating abstract classes, developers can enforce consistent behaviour across derived classes while promoting code reusability and maintainability. Embrace the power of abstract classes in your PHP projects and embark on a journey towards efficient, structured, and extensible code. Happy coding!

Spread the love
Scroll to Top