2012-04-10 16 views
10

मैं एक वर्ग है कि निर्माता में एक मौजूदा PDO कनेक्शन स्वीकार करता है:मौजूदा कनेक्शन से मौजूदा पीडीओ ड्राइवर प्राप्त करें?

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

    // ... 
} 

मेरा प्रश्न है: क्या क्या चालक एक मौजूदा PDO कनेक्शन वर्तमान में (अधिमानतः सूची found here से) उपयोग कर रहा है निर्धारित करने के लिए एक तरीका है? मैंने एपीआई दस्तावेज में कुछ भी नहीं देखा।

उत्सुकता के लिए, मैं जानना चाहता हूं कि कौन सा ड्राइवर उपयोग किया जा रहा है क्योंकि मेरी कक्षा में कार्यक्षमता डेटाबेस-विशिष्ट है, इसलिए मुझे यह सत्यापित करने का एक तरीका चाहिए कि इसे एक कनेक्शन पास किया जा रहा है उचित प्रकार का है ।

उत्तर

17

आप PDO::ATTR_DRIVER_NAME साथ PDO::getAttribute() उपयोग कर सकते हैं:

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

धन्यवाद। मेरा मानना ​​है कि यह काम करेगा। ऐसा प्रतीत नहीं होता है कि इसके द्वारा लौटाए गए मान उपलब्ध ड्राइवर पृष्ठ पर सूचीबद्ध हैं, हालांकि (उदाहरण के लिए, मैं उस 'सूचीबद्ध' पीडीओ_ओसीआई 'की बजाय ओरेकल 10 जी के लिए स्ट्रिंग 'ओसीआई' लौटा रहा हूं पृष्ठ)। – FtDRbwLXw6

+2

@drrcknlsn, ऐसा इसलिए है क्योंकि उस पृष्ठ पर सूचीबद्ध नाम वास्तविक नाम नहीं हैं। वास्तविक नाम प्राप्त करने के लिए http://www.php.net/manual/hi/pdo.getavailabledrivers.php का उपयोग करें। – Brad

संबंधित मुद्दे