What are the SOLID principles in object-oriented design and how can they guide PHP developers in avoiding common pitfalls?

The SOLID principles are a set of five design principles in object-oriented programming that aim to make software designs more understandable, flexible, and maintainable. By following these principles, PHP developers can avoid common pitfalls such as tight coupling, code duplication, and difficulty in extending or modifying code.

// Example of implementing the Single Responsibility Principle (SRP)
class User {
    private $name;
    private $email;

    public function setName($name) {
        $this->name = $name;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function save() {
        // Code to save user data to database
    }
}

// Example of implementing the Open/Closed Principle (OCP)
interface Shape {
    public function area();
}

class Rectangle implements Shape {
    private $width;
    private $height;

    public function area() {
        return $this->width * $this->height;
    }
}

class Circle implements Shape {
    private $radius;

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