What is the difference between Callback-Functions and Observer Pattern in PHP, and how are they used in plugin/module development?

Callback functions are functions that are passed as arguments to other functions and are executed at a certain point in the code. The Observer Pattern is a design pattern where an object (subject) maintains a list of dependents (observers) that are notified of any changes in the subject's state. In plugin/module development, callback functions can be used to extend the functionality of a plugin/module by allowing developers to hook into specific points in the code. The Observer Pattern can be used to create a more loosely coupled architecture where modules/plugins can subscribe to events and react accordingly.

// Callback Function Example
function my_callback_function() {
    echo "Callback function executed!";
}

function do_something($callback) {
    // Do something
    $callback();
}

do_something('my_callback_function');

// Observer Pattern Example
class Subject {
    private $observers = [];

    public function addObserver($observer) {
        $this->observers[] = $observer;
    }

    public function notifyObservers() {
        foreach ($this->observers as $observer) {
            $observer->update();
        }
    }
}

class Observer {
    public function update() {
        echo "Observer notified!";
    }
}

$subject = new Subject();
$observer = new Observer();
$subject->addObserver($observer);
$subject->notifyObservers();