How can object-oriented programming principles be applied to PHP for creating customizable and expandable image galleries?

To create customizable and expandable image galleries in PHP using object-oriented programming principles, we can create classes for images, galleries, and gallery settings. This allows us to easily add new features, customize the gallery layout, and manage images efficiently.

class Image {
    private $url;
    
    public function __construct($url) {
        $this->url = $url;
    }
    
    public function getUrl() {
        return $this->url;
    }
}

class Gallery {
    private $images = [];
    
    public function addImage(Image $image) {
        $this->images[] = $image;
    }
    
    public function displayGallery() {
        foreach($this->images as $image) {
            echo '<img src="' . $image->getUrl() . '">';
        }
    }
}

class GallerySettings {
    private $columns;
    
    public function __construct($columns) {
        $this->columns = $columns;
    }
    
    public function getColumns() {
        return $this->columns;
    }
}

// Create images
$image1 = new Image('image1.jpg');
$image2 = new Image('image2.jpg');

// Create gallery
$gallery = new Gallery();
$gallery->addImage($image1);
$gallery->addImage($image2);

// Display gallery
$gallery->displayGallery();