Паттерны / Структурные паттерны
image

<?php

//Target
interface IText {
    //Request()
    function getText(): string;
}

//Adaptee
class StringList {
    private $rows = [];

    //SpecificRequest()
    function getString(): string {
        return implode("\n", $this->rows);
    }

    function add(string $value) {
        $this->rows[] = $value;
    }
}

//Adapter
class TextAdapter extends StringList implements IText {
    //Request()
    function getText(): string {
        return $this->getString();
    }
}

function getTextAdapter(): TextAdapter {
    $adapter = new TextAdapter();
    $adapter->add("line 1");
    $adapter->add("line 2");
    return $adapter;
}

//Client
$adapter = getTextAdapter();
$text = $adapter->getText();
//text: line 1
//      line 2
echo $text;


Преобразует интерфейс класса в другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна из-за несовместимости интерфейсов.