क्लास में उपयोग (Usage in Class)
क्वेरीज़ को कस्टम क्लासेस के आधार पर ऑब्जेक्ट्स में प्राप्त किया जा सकता है। उदाहरण के लिए, यदि हमारे पास ExampleClass नामक क्लास है, तो निम्नलिखित क्वेरी ExampleClass प्रकार के ऑब्जेक्ट्स लौटाएगी।
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
यदि क्लास में __construct() मेथड है, तो ऑब्जेक्ट बनाए जाएंगे, प्रॉपर्टीज़ को ऑब्जेक्ट में जोड़ा जाएगा, और फिर __construct() मेथड को कॉल किया जाएगा। उदाहरण के लिए, यदि आपके पास निम्नलिखित क्लास और क्वेरी है:
class ExampleClass {
function __construct() {
// कुछ करें
}
}
$result = $connection->query("SELECT id, title FROM {example_table}", [], [
'fetch' => 'ExampleClass',
]);
ऑब्जेक्ट बनाया जाएगा, प्रॉपर्टीज़ id और title ऑब्जेक्ट में जोड़ी जाएँगी, और फिर __construct() चलाया जाएगा। इन घटनाओं का क्रम PHP के बग से संबंधित है जो 5.2 से कम वर्ज़न में मौजूद था।
यदि ऑब्जेक्ट पर __construct() मेथड मौजूद है जिसे प्रॉपर्टीज़ जोड़ने से पहले चलाना आवश्यक है, तो इसे निम्न उदाहरण में दिखाए अनुसार किया जा सकता है:
$result = $connection->query("SELECT id, title FROM {example_table}");
foreach ($result->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'ExampleClass') as $record) {
// कुछ करें
}
fetchAll को पास किए गए आर्गुमेंट्स इसी तरह से उपयोग किए जा सकते हैं। PDO::FETCH_CLASS fetchAll को बताता है कि लौटाए गए रिज़ल्ट सेट को लेकर ExampleClass प्रकार के ऑब्जेक्ट्स की प्रॉपर्टीज़ के रूप में वैल्यूज़ जोड़ें (दूसरा आर्गुमेंट)। PDO::FETCH_PROPS_LATE fetchAll को बताता है कि रिज़ल्ट सेट की प्रॉपर्टीज़ को ऑब्जेक्ट में __construct() कॉल करने के बाद जोड़ा जाए।