2012-04-10 22 views
10

Tôi có một lớp học mà chấp nhận một PDO kết nối hiện có trong các nhà xây dựng:Nhận trình điều khiển PDO hiện tại từ kết nối hiện có?

class Foo { 
    public function __construct(\PDO $conn = NULL) { 
     // ... 
    } 

    // ... 
} 

Câu hỏi của tôi là: có cách nào để xác định những người lái xe một PDO kết nối hiện tại đang sử dụng (tốt nhất là từ danh sách found here)? Tôi không thấy gì trong tài liệu API. Đối với những người tò mò, tôi muốn biết trình điều khiển đang được sử dụng bởi vì chức năng trong lớp của tôi là cơ sở dữ liệu cụ thể, vì vậy tôi muốn một cách để xác nhận rằng một kết nối được chuyển đến nó là loại thích hợp .

Trả lời

17

Bạn có thể sử dụng PDO::getAttribute() với PDO::ATTR_DRIVER_NAME:

$name = $conn->getAttribute(PDO::ATTR_DRIVER_NAME); 
+0

Cảm ơn bạn. Tôi tin rằng điều này sẽ làm việc. Nó không xuất hiện rằng các giá trị trả về bởi đây là những giá trị được liệt kê trên trang trình điều khiển có sẵn, mặc dù (ví dụ, tôi thấy chuỗi 'oci' được trả về cho Oracle 10g, thay vì' PDO_OCI' được mong đợi như được liệt kê trên đó trang). – FtDRbwLXw6

+2

@drrcknlsn, Đó là vì tên được liệt kê trên trang đó không phải là tên thật. Sử dụng http://www.php.net/manual/en/pdo.getavailabledrivers.php để lấy tên thật. – Brad

Các vấn đề liên quan