What are the best practices for implementing logging and debugging functionality in PHP when transitioning from static to object-oriented programming?

When transitioning from static to object-oriented programming in PHP, it is important to update logging and debugging functionality to adhere to OOP principles. One best practice is to create a Logger class that handles logging actions and can be easily injected into other classes as a dependency. This allows for better encapsulation and separation of concerns within the codebase.

class Logger {
    public function log($message) {
        // Log the message to a file, database, or other storage medium
        echo $message . PHP_EOL;
    }
}

class MyClass {
    private $logger;

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

    public function doSomething() {
        $this->logger->log('Doing something...');
        // Other code logic here
    }
}

$logger = new Logger();
$myClass = new MyClass($logger);
$myClass->doSomething();