How can objects be passed to other objects in PHP to improve functionality?

To pass objects to other objects in PHP to improve functionality, you can use dependency injection. This means injecting an object into another object's constructor or method, allowing the receiving object to use the injected object's functionality. This promotes code reusability, testability, and flexibility in your application.

// Example of passing an object to another object using dependency injection

class Database {
    public function query($sql) {
        // Database query logic
    }
}

class UserRepository {
    private $database;

    public function __construct(Database $database) {
        $this->database = $database;
    }

    public function getUserById($id) {
        $sql = "SELECT * FROM users WHERE id = $id";
        return $this->database->query($sql);
    }
}

$database = new Database();
$userRepository = new UserRepository($database);
$user = $userRepository->getUserById(1);