Dieser Artikel stellt Ihnen das Beauty Framework (mit Code) basierend auf PHP7 vor. Es hat einen gewissen Referenzwert. Ich hoffe, es wird Ihnen hilfreich sein.
Der Kern Die Verbindung des Frameworks reicht von der anfänglichen Auflösung der Anforderungsweiterleitung bis zur Verteilung des Controllers und der Dateninteraktion des Modells bis zur Antwort.
Die Verwendung anderer Frameworks zur Implementierung wird sehr umständlich sein, und es gibt zu viele integrierte Inhalte, von denen viele nicht benötigt werden. Deshalb habe ich ein einfaches und praktisches Framework geschrieben, das auf anderen Frameworks basiert.
Beginnen wir mit dem Routing:
1) Routing
Die Regeln des Routing-Protokolls verwenden den Vergleich regulärer Ausdrücke, um verschiedene Links an verschiedene Controller zu verteilen. Außerdem werden anonyme Aufrufe unterstützt Funktionen
// 第一种,使用匿名函数 App::router()->get('/', function () { echo "Beauty Framework."; });
// 第二种,使用url分发到控制器 App::router()->post('/user/info/[0-9]+(/[0-9]+)?', 'App\Controllers\UserController@getUserInfo');
Der darin implementierte Kerncode: (ist es sehr einfach)
if (is_string($lostrcallable) && preg_match('!^([\a-zA-Z0-9]+)\@([a-zA-Z0-9]+)$!', $lostrcallable, $matches)) { $class = $matches[1]; $method = $matches[2]; $callable = function () use ($class, $method) { static $obj = null; if ($obj === null) { $obj = new $class; } return call_user_func_array(array($obj, $method), func_get_args()); }; }
2) Controller
Nein, Sie Wohin auch immer es zeigt, die Anfrage kann verarbeitet werden, aber laut MVC wird empfohlen, es in den Controller zu schreiben, also machen wir es
3) Modellebene
Die Dao-Klasse Da viele Leute jetzt MySQL verwenden, werden die regulären Operationen von MySQL hier direkt integriert. Da die nativen Operationen der Datenbank viele Injektionen und andere Probleme verursachen, gibt es keine Unterstützung direkte QQuery-Methode.
4) DAO-Schicht
Da es in vielen Fällen notwendig ist, Lesen und Schreiben zu trennen, es jedoch zu umständlich ist, MySQL Proxy zu verwenden, um dies zu erreichen, wurde die Unterstützung implementiert Für Datenbankabfragen basierend auf Verschiedenen SQL werden jeweils Master- und Slave-Datenbanken verwendet.
Wie?
ist direkt nach nicht verwendeten Abfragevorgängen unterteilt. Ausgewählte Abfragevorgänge werden direkt der Lesedatenbank zugewiesen, und Einfügen, Aktualisieren und Löschen werden direkt der Schreibdatenbank zugewiesen. Sie können es auch direkt mit onMasterConnection/onSlaveConnection angeben. Sehen Sie sich an, wie Select es macht. Dieser Teil ist die Implementierungslogik:
/** * 获取查询内容,以数组形式返回,数据内为array。 * * @access public * @param integer|array $limit Array to define SQL limit in format Array ($count, $offset) * or only $count * * @return mixed Array of Clients */ protected function get($limit = null) { $this->dbClient->setQueryChannel($this->channel); $results = $this->dbClient->arrayBuilder()->get($this->dbTable, $limit, $this->fields); $this->_reset(); if ($this->dbClient->count == 0) { return []; } return $results; }
in Die Entwicklungsumgebung und die Produktionsumgebung verwenden unterschiedliche Konfigurationsumgebungen, und Sie können im Framework eine .env-Umgebung erstellen, um zu wechseln. Entwicklung und Produktion können routinemäßig in der Konfiguration festgelegt werden. Welche Umgebung verwendet wird, wird in .env
; This is a environment configuration file environment=development
// 支持使用.连接访问配置项,访问的是config/app.php中的config key \Beauty\Core\App::config()->get("app.config");
Da keine Ansicht erforderlich ist und nur JSON-Daten zurückgegeben werden müssen, wird Text/JSON direkt in den Header geschrieben. = =
Andere Implementierungen
Empfohlene verwandte Artikel:
Zend Framework Smarty-Erweiterungsimplementierungsmethode, zendsmarty
Zend Framework-Routing-Mechanismus-Codeanalyse, zendframework
Das obige ist der detaillierte Inhalt vonBeauty Framework basierend auf PHP7 implementiert (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!