आपकी कक्षा को स्थिर रूप से संचालित करने के लिए, आपको कुछ चीज़ें करने की ज़रूरत है।
सबसे पहले, कनेक्शन को स्थिर बनाएं, उदाहरण के लिए
private static $connection;
दूसरे, सभी अंडरस्कोर क्यों?
define('DB_HOST', 'localhost');
define('DB_NAME', 'your_db_name');
define('DB_USER', 'username');
define('DB_PASS', 'password');
साथ ही, कक्षा स्थिरांक का उपयोग क्यों करें? बस उन स्थिरांकों का उपयोग करें जिन्हें आप पहले ही परिभाषित कर चुके हैं।
तीसरा, कंस्ट्रक्टर को खो दें। आप इस वर्ग का एक उदाहरण बनाने की अपेक्षा नहीं कर सकते और इसे स्थिर रूप से उपयोग करें। मैं कनेक्शन के लिए आलसी-लोड दृष्टिकोण के लिए जाऊंगा
private static function getConnection() {
if (self::$connection === null) {
$dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',
DB_HOST, DB_NAME);
self::$connection = new PDO($dsn, DB_USER, DB_PASS, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
));
}
return self::$connection;
}
फिर, आपकी सार्वजनिक विधियां इस विधि को आंतरिक रूप से कॉल करेंगी। मैं आपका dbDataArray
भी निकाल दूंगा आपको एक सहयोगी सरणी वापस करने का तरीका दिखाने के लिए विधि
public static function dbDataArray($query, $params = array()) {
$stmt = self::getConnection()->prepare($query);
$stmt->execute($params);
return $stmt->fetchAll();
}