लक्ष्य
जैसा कि मैंने देखा, इस मामले में आपका लक्ष्य दुगना है:
- प्रति डेटाबेस एकल/पुन:प्रयोज्य कनेक्शन बनाएं और बनाए रखें
- सुनिश्चित करें कि कनेक्शन ठीक से सेट किया गया है
समाधान
मैं पीडीओ कनेक्शन से निपटने के लिए अनाम फ़ंक्शन और फ़ैक्टरी पैटर्न दोनों का उपयोग करने की अनुशंसा करता हूं। इसका इस्तेमाल कुछ इस तरह दिखेगा:
$provider = function()
{
$instance = new PDO('mysql:......;charset=utf8', 'username', 'password');
$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$instance->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
return $instance;
};
$factory = new StructureFactory( $provider );
फिर किसी भिन्न फ़ाइल में या उसी फ़ाइल में निम्नतर:
$something = $factory->create('Something');
$foobar = $factory->create('Foobar');
फ़ैक्टरी को स्वयं कुछ इस तरह दिखना चाहिए:
class StructureFactory
{
protected $provider = null;
protected $connection = null;
public function __construct( callable $provider )
{
$this->provider = $provider;
}
public function create( $name)
{
if ( $this->connection === null )
{
$this->connection = call_user_func( $this->provider );
}
return new $name( $this->connection );
}
}
इस तरह से आपको एक केंद्रीकृत संरचना मिल जाएगी, जो यह सुनिश्चित करती है कि कनेक्शन केवल तभी बनाया जाए जब आवश्यक हो। यह इकाई-परीक्षण और रखरखाव की प्रक्रिया को भी बहुत आसान बना देगा।
इस मामले में प्रदाता बूटस्ट्रैप चरण में कहीं मिल जाएगा। यह दृष्टिकोण एक स्पष्ट स्थान भी देगा जहां कॉन्फ़िगरेशन को परिभाषित करना है, जिसका उपयोग आप डीबी से कनेक्ट करने के लिए करते हैं।
ध्यान रखें कि यह एक अत्यंत सरलीकृत उदाहरण . है . आपको निम्नलिखित दो वीडियो देखने से भी लाभ हो सकता है:
साथ ही, मैं दृढ़ता से एक उचित ट्यूटोरियल पढ़ने की सलाह दूंगाए> पीडीओ के उपयोग के बारे में (ऑनलाइन खराब ट्यूटोरियल का एक लॉग है)।