Heim > Datenbank > MySQL-Tutorial > So schreiben Sie Ihr eigenes Datenbankpaket (1)

So schreiben Sie Ihr eigenes Datenbankpaket (1)

PHPz
Freigeben: 2018-05-17 15:12:51
Original
1646 Leute haben es durchsucht


Schreiben Sie es vorne

  1. Ich bin noch ein Neuling, bitte weisen Sie auf Fehler hin, indem Sie leicht kommentieren

  2. Aufgrund der geringen Berufserfahrung kann die Datenbankanbindung nicht vollständig abgedeckt werden.

  3. Daher liefert diese Serie bitte nur Ideen, die ausgereift und stabil sind Suchen Sie selbst nach dem Datenbankpaket

  4. Die ursprüngliche Absicht beim Schreiben dieser Serie besteht darin, andere zu inspirieren. Am Ende jedes Abschnitts werde ich einige persönliche Fragen stellen Fragen (oder auch nicht), ich hoffe, es kann einige Meister dazu bringen, meine Fragen zu beantworten

  5. Die verwendete PHP-Version ist 7.0+. Diese Serie ist nicht abwärtskompatibel 5.6, bitte kommen Sie und spielen Sie

  6. Das Datenbankpaket bezieht sich auf den Quellcode von Laravel. Wenn es Ähnlichkeiten gibt, ist das kein Zufall

Endeffekt

Angenommen, wir haben eine Tabelle mit dem Namen „Actor“, die nach einfachen Einstellungen wie folgt direkt aufgerufen werden kann:

$a = Actor::select('first_name', 'last_name')
        ->where('first_name', 'NICK')
        ->where('last_name', 'WAHLBERG')
        ->first()
var_dump($a);
Nach dem Login kopieren

Rückgabeformat

object(Actor)[11]
  public 'first_name' => string 'NICK' (length=4)
  public 'last_name' => string 'WAHLBERG' (length=8)
Nach dem Login kopieren

Die zurückgegebenen Daten sind weiterhin funktionsfähig (Aktualisierungsdatum /löschen)

$a->update(...);
$a->delete();
Nach dem Login kopieren
Gemeinsame Methode zum Schreiben von Datenbankverbindungen

Jeder, der eine hat Ein gewisses Verständnis von PHP weiß, dass pdo im Vergleich zu dem eliminierten

MySQLOder anstelle von MySQL SQL-Injection-Angriffe vermeiden kann, sicherer und objektorientiert ist , daher wird im Folgenden pdo als Beispiel verwendet

<?php
$driver=&#39;mysql&#39;; //数据库类型

$host=&#39;localhost&#39;; //数据库主机名

$db = &#39;sakila&#39;; //数据库名称

$username=&#39;root&#39;; //数据库连接用户名

$password=&#39;&#39;; //数据库密码

$dsn="$driver:host=$host;dbname=$db";

try {    
    $pdo= new PDO($dsn, $username, $password); //初始化一个PDO对象   

    $sql = "select * from actor";

    $res = $pdo->query($sql); // 从actor中获取所有数据

    foreach($res as $row) echo $row['first_name']."<br>";

} catch (PDOException $e) {    
    die($e->getMessage());
}
Nach dem Login kopieren
oben Das Beispiel ist sehr einfach. Wenn ein Projekt wächst und komplexer wird, benötigen wir wie einige eine Kapselungsklasse, um die Duplizierung von Code zu reduzieren Hilfs-

Funktionen, die wir normalerweise selbst schreiben, aber die Kapselungsklasse ist etwas fortgeschrittener. Nur Schritte.

Grundidee

Also, wie soll es geschrieben werden?

Wenn wir Code vereinfachen müssen, schreiben wir normalerweise selbst einige Hilfsfunktionen. Ich persönlich habe beispielsweise eine schlechte Angewohnheit und verwende nicht gerne die
Debugging-Funktion der Editor (Voice-over: Ich verwende sublime text 3), also schreibe ich es am Anfang so:

$a = "is bug";
die(var_dump($a)); // 输出变量并且停止运行之后的代码
/***从xdebug得知bug出现在这一行,所以查看上一行的逻辑与数据 ***/
Nach dem Login kopieren
die(var_dump()) hat a etwas höhere Auftrittsrate, also habe ich sie in eine Hilfsfunktion geschrieben

function dd($var) {
    die(var_dump($var));
}
Nach dem Login kopieren
Aus dem gleichen Grund ist die Auftrittsrate von select beim Lesen der Datenbank extrem hoch, also schließen Sie es einfach ab

function select($pdo, $table, $require, $where = []) {
    $w = [];

    // 将搜索条件转化为数据库命令能接受的格式
    foreach ($where as $key => &$val) 
        $w[] = "$key = '$val'";

    // 有时候并不需要条件,仅仅将所有数据取出,因此$where默认为空
    if(!empty($w)) $w = "where ".implode(', ', $w);
    else $w = "";

    // 生成sql query
    $sql = "select $require from $table $w";

    // 将已生成的query带入pdo实例
    $res = $pdo->query($sql);

    // 返回结果
    return $res->fetchAll();
}
Nach dem Login kopieren
Beispiel

select($pdo, 'actor', '*', ['first_name'=>'PENELOPE'])
/** 
  * 生成sql query => select * from actor where first_name = 'PENELOPE'
**/
Nach dem Login kopieren
Zusammenfassend lässt sich sagen, dass die einfache Beschreibung der Datenbankkapselung darin besteht, Parameter in die Hilfsfunktion einzubringen und diese automatisch SQL-Befehle generieren zu lassen.

Datenbankgekapselte

Architektur

ist hauptsächlich in vier Dateien unterteilt

Die Architektur kann möglicherweise nicht gut erklärt werden, aber sie Es spielt keine Rolle. Ich werde es nach und nach ausführlich erklären.

Wenn Sie können, geben Sie ein „Gefällt mir“ oder diskutieren Sie es im Kommentarbereich kann einen faulen Krebspatienten im Spätstadium dazu bringen, voranzukommen.

Das obige ist der detaillierte Inhalt vonSo schreiben Sie Ihr eigenes Datenbankpaket (1). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage