मैंने अपने डेटा के लिए डाटाबेसवेपर का उपयोग करने के बारे में कुछ शोध किया है। हालांकि, मैंने कुछ पोस्ट पढ़ी हैं जहां लोग दावा करते हैं कि आपको पीडीओ का उपयोग डेटाबेसबेस के लिए नहीं करना चाहिए क्योंकि यह पहले से ही एक है।क्या एक पीडीओ रैपर वास्तव में अधिक है?
ऐसा हो सकता है, लेकिन मुझे अभी भी आश्वस्त है कि इसमें बहुत सारे लाभ हैं।
- आप अपनी वेबसाइट फ़ाइलों में फैले हुए एक वर्ग में अपने सभी डेटा क्रियाओं (क्रूड) को संभालते हैं। इसलिए त्रुटियों को डीबग करना और संभालना बहुत आसान है।
- आप आसानी से अपनी कक्षा को किसी अन्य डेटाबेस क्लास के साथ बदल सकते हैं।
- तुम बस databaseclass में कोड फोन
- वैकल्पिक रूप से आप उदाहरण प्रवेश, आंकड़ा परीक्षण, के लिए के साथ वर्ग का विस्तार कर सकते अपने कोड को दोहराने के लिए, नहीं है ...
उदाहरण:
<?php
class Database
{
public $connection;
private $host = "";
private $username = "";
private $password = "";
private $dbname = "";
public function __construct(){
$this->connection = new PDO("mysql:host=$this->host;dbname=$this->dbname",$this->username,$this->password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function insert($query, array $data){
$this->connection->prepare($query)->execute($data);
return $this->connection->lastInsertId();
}
public function update($query, array $data) {
$stmt = $this->executeQuery($query,$data);
return $stmt->rowCount();
}
public function delete($query, array $data) {
$stmt = $this->executeQuery($query,$data);
return $stmt->rowCount();
}
public function findOne($query, array $data = null){
$stmt = $this->executeQuery($query,$data);
return $stmt->fetchObject();
}
public function findMany($query, array $data = null){
$stmt = $this->executeQuery($query,$data);
return($stmt->fetchAll(PDO::FETCH_OBJ));
}
public function executeQuery($query,$data = null){
$stmt = $this->connection->prepare($query);
$stmt->execute($data);
return $stmt;
}
}
?>
डेटा पुनर्प्राप्त करने के लिए सभी चरणों को लगातार दोहराने के बजाय, आप get() को कॉल कर सकते हैं और एक क्वेरी और कुछ वैकल्पिक पैरामीटर पास कर सकते हैं। यह हर बार एक कनेक्शन खोलने की तुलना में बहुत अधिक प्रभावशाली है, कोड की 3 लाइनें करें और इसे बंद करें।
$db->get("select * from user where id = ?",array(1));
"सभी कदम ..." - क्या वास्तव में बहुत से लोग हैं? पीडीओ आपको 'foreach ($ pdo-> क्वेरी (...) $ पंक्ति के रूप में लिखने देता है) ', जो कम से कम लगभग एक अपरिपक्व बयान के लिए मिलता है। डेटाबेस के साथ बातचीत करना महंगा है और केवल "सभी जगहों" के बजाय शुरू होने के लिए बहुत विशिष्ट तरीकों से होना चाहिए, मुझे नहीं लगता कि यह हमेशा एक पंक्ति में क्यों होता है। – deceze
जगह के बजाय बहुत विशिष्ट तरीकों के साथ आपका क्या मतलब है? –
एमवीसी, चिंताओं को अलग करना। आपके मॉडल परत में कुछ केंद्रित स्थान होना चाहिए जहां डेटा डेटाबेस से पुनर्प्राप्त किया जाता है। जैसे 'UserService :: getAllActiveUsers()' या 'PostService :: UpdatePost ($ id, array $ data) '। इन तरीकों का एकमात्र काम डेटाबेस के साथ एक विशिष्ट तरीके से बातचीत करना है। अंदर आपको उचित डेटाबेस क्वेरी पर जितनी आवश्यक हो उतनी लाइनें खर्च करनी चाहिए, इसे एक लाइन में बनाने का कोई फायदा नहीं है। इस तरह के "सरल रैपर" होने से आपको एक बार इन केंद्रीय तरीकों को बनाने के बजाय सभी जगहों से अपने डेटाबेस से पूछताछ करने के लिए प्रेरित किया जाता है। – deceze