Dies ist ein Rahmen für kleine und mittelgroße Teamentwicklung
Ein einfacher persönlicher Blog BYBZMT/Blog.php
Persönlicher Blog BYBZMT/Blog.php Basierend auf diesem Framework hat eine sehr leistungsstarke Leistung
| Modell | Statische Dateien | Home (2 Blogs) | Home (10 Blogs) |
|---|---|---|---|
| FPM | 4705 | 1507 | 1237 |
| Swoole | 26607 | 3276 | 2084 |
├── assets 资源目录(如:字体文件等)
├── config
│ ├── dev 开发环境配置
│ ├── product 生产环境配置
├── index.php 项目入口
├── library 其它与composer不兼容的库
├── src
│ ├── Admin 管理后台
│ ├── Api app接口端
│ ├── Backend 内部(内网)接口
│ ├── Common 公共代码目录
│ ├── Console 控制台
│ ├── Wap 手机Web端
│ └── Web Web端
├── static
│ ├── admin 后台静态文件
│ └── web Web端静态文件
├── tests 单元测试目录
├── var 可读写目录(如:模板缓存等)
└── vendor composer库
Da SWOOLE ein ansässiger Speichermodus ist, ist der Lebenszyklus globaler Variablen auf Anwendungsebene und im Gegensatz zum FPM-Modus nur Anforderungsebene. Globale Variablen können zwischen verschiedenen Anforderungen gepflegt werden, sodass die ursprünglichen Methoden wie $ _get und $ _post nicht verwendet werden können. Dieser Framework instanziiert ein Kontextobjekt für jede Anforderung und speichert alle Daten, die sich auf die aktuelle Anforderung in das Kontextobjekt beziehen.
Das Kontextobjekt ist auch für das Laden und Ersetzen von Komponenten in der Hierarchie verantwortlich.
Wie im obigen Blog:
Bei der Initialisierung der Komponente sucht das Kontextobjekt zunächst nach der entsprechenden Komponente in seinem Namespace. Wenn es nicht gefunden wird, wird der übergeordnete Kontext initialisiert. Auf diese Weise kann es die von Ihnen benötigten Komponenten leicht erweitern und ersetzen.
API:
Anforderungsobjekt ist ein SWOOLE_HTTP_REQUEST, der direkt verwendet wird
Antwortobjekte verwenden auch die direkte SWOOLE_HTTP_RESPONSE
Im FPM -Modus implementiert das Framework eine Kompatibilitätsschicht, um dieselbe API wie in der Schleuse aufrechtzuerhalten
Das Framework implementiert alle Objekte, die sich mit Kontextobjekten als Komponente beziehen, hauptsächlich, um schnelle Instanziierungsfunktionen bereitzustellen, und erfordert keine wiederholte Übertragung von Kontextobjekten.
Darüber hinaus verfügt die Komponente auch in einer beliebigen Komponente bequeme Methoden.
Das Geländer wird nicht mit offenem Mapping angewendet, sondern verwendet ein registriertes Routing, um relativ sauber zu sein.
Das Routing -Projekt befindet sich in BYBZMT/router.php
Wenn Sie es nicht mögen, können Sie es durch die Bibliothek ersetzen, die Ihnen gefällt, und es ist sehr einfach, die Komponenten des Frameworks zu ersetzen.
Das Framework empfiehlt die Verwendung des Domänenmodellmuster
Es ist zu beachten, dass Datenanzeigen nicht in Dienst, Tabelle und Zeile geschrieben werden sollten. Es ist nur für die Bereitstellung der grundlegendsten Daten verantwortlich. Die Organisation der entsprechenden Datenstruktur gemäß den Anforderungen an die Seite und API sollte in Controllern und Ansichten implementiert werden.
Die Datenbank ist in die Tabellenklasse unterteilt, die grundlegende Funktionen und Tabellenklassen liefert, die Tabellenfunktionen liefert. Es gibt auch ein Tablerowcache -Merkmal, das eine Caching -Funktion bietet. Die Tabelle eines Benutzers sollte aus der Tabelle oder Tabellenklasse geerbt werden, und wenn Cache erforderlich ist, kann er eingeführt werden.
Beachten Sie, dass sowohl die Tabelle als auch der Cache nur die Vorgänge GET/GET/INSERT/UPDATE/Löschen/Löschen in der Tabellenklasse unterstützen. Wenn Sie SQL zur direkten Durchführung von Datenvorgängen verwenden, müssen Sie die relevanten Cache- oder Tabellenfunktionen manuell verwalten.
Das Framework bietet eine LaZyrow -Lademethode. Beim Instantieren wird nur die ID aufgezeichnet und versucht dann, Stapel zu laden, bis auf das Attribut zugegriffen wird.
Das Framework bietet einige gemeinsame Funktionen und ist bequem zu bedienen
Dieser Cache hat in der obigen Tabelle nichts mit dem Cache zu tun, er bezieht sich auf den vom Benutzer verwalteten Cache. Versuchen Sie, verschiedene Arten von Caches mit verschiedenen Klassen zu verwalten, um wichtige Konflikte zu vermeiden.
Das Framework liefert keine Vorlagenfunktionen und es wird empfohlen, vorhandene Vorlagenprogramme von Drittanbietern direkt vorzunehmen. (Zum Beispiel: Twig)
Die Funktionen des Frameworks möchten sich nicht an alle Umgebungen anpassen, sondern müssen nur in 80% der Fälle verfügbar sein. Besondere Umstände können speziell in bestimmten Projekten behandelt werden.
Das Framework enthält nicht viel Code. Versuchen Sie also, den gesamten Code so weit wie möglich zu lesen.