How can classes in PHP be designed to easily accommodate future extensions?

To easily accommodate future extensions in PHP classes, it is important to follow the principles of object-oriented programming such as encapsulation, inheritance, and polymorphism. By designing classes with clear separation of concerns, using interfaces and abstract classes, and allowing for method overriding, you can create a flexible and extensible codebase that can be easily extended in the future.

// Example of designing a PHP class to easily accommodate future extensions

interface Shape {
    public function calculateArea();
}

class Circle implements Shape {
    private $radius;

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

    public function calculateArea() {
        return pi() * $this->radius * $this->radius;
    }
}

class Square implements Shape {
    private $sideLength;

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

    public function calculateArea() {
        return $this->sideLength * $this->sideLength;
    }
}