मैं अपने भविष्य के वेबपैप में पीडीओ का उपयोग करने की सोच रहा हूं। वर्तमान में (का उपयोग करते हुए मैं क्या अतः अब तक से सीखा है), क्या मैं अपनी साइट डेटाबेस कनेक्शन को संभालने के लिए में है इस तरह एक सिंगलटन वर्ग है: के साथ सामग्री विशेषपीडीओ फ़ंक्शन में उपयोग करने का प्रयास
class DB {
private static $instance = NULL;
private static $dsn = "mysql:host=localhost;dbname=mydatabase;";
private static $db_user = 'root';
private static $db_pass = '0O0ooIl1';
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance() {
if (!self::$instance)
{
self::$instance = new PDO(self::$dsn, self::$db_user, self::$db_pass);
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
}
और एक अन्य फ़ाइल (functions.php) कार्यों वास्तव में इस एक की तरह लग रही:
function get_recent_activities()
{
try
{
$db = DB::getInstance();
// --prepare and execute query here, fetch the result--
return $my_list_of_recent_activities;
}
catch (PDOException $e)
{
return "some fail-messages";
}
}
...
अर्थ मैं कार्यों के सभी में try .. catch
हिस्सा दोहराने के लिए किया है।
मेरे प्रश्न हैं:
- मैं कैसे और अधिक कुशल है कि करना चाहिए? (उदाहरण के लिए, सभी कार्यों में
try..catch
दोहराना नहीं है, और फिर भी प्रत्येक पर अलग-अलग "असफल-संदेश" वापस करने में सक्षम है) - क्या यह पहले से ही एक अच्छा अभ्यास है? मैं अभी भी पीडीओ और ओओपी (अभी भी सीखने के लिए बहुत कुछ) में नया हूं, इसलिए (अभी तक), मुझे वास्तव में कोई नुकसान या चीजें नहीं दिखाई दे सकती हैं जिन्हें वहां सुधार किया जा सकता है।
मुझे खेद है कि यह अस्पष्ट या बहुत लंबा लगता है। अग्रिम में धन्यवाद।
पीडी कहता है कि दूसरे के लिए, कस्टम त्रुटि वर्ग का मेरा उपयोग बस डीबी में त्रुटि लॉग करता है और मुझे एक ईमेल भेजता है। अंतिम उपयोगकर्ता कभी स्टैक ट्रेस या अन्य अप्रासंगिकता को नहीं देखता है। यही कारण है कि अगर कोई त्रुटि है तो मैं झूठी वापसी करता हूं और फिर उपयोगकर्ता को –
बताता हूं कि यह निर्धारित करने के लिए मेरी क्वेरी के वापसी मूल्य का परीक्षण करें यदि आप SELECT बदलते हैं और/या किसी अन्य क्वेरी ने डेटाबेस बदल दिया है तो SELECT अब और काम नहीं करता है: आप कभी नहीं इसके बारे में तब तक पता चले जब तक कि आप अपने पृष्ठ का परीक्षण न करें। यह प्रतिकूल है। प्रत्येक क्वेरी के लिए प्रयास/पकड़ आवश्यक है! – mgutt