Version 2.0.2-2024-12-13
Ein einfaches Web-Application-Framework, das Modell-View-Controller-Architekturmuster (MVC) implementiert.
composer require "simplesamlphp/simplesamlphp:^2.2" ).UMVC unterstützt Module, siehe Konfiguration/Komponenten.
Das Framework unterstützt Funktionstests mit seinem Framework -Plugin. Die global installierte Codecception muss mit dem erforderlichen (derzeit V3.1.2) kompatibel sein.
UMVC unterstützt CLI. Sie können Ihre eigenen Befehle erstellen. Die integrierten Befehle sind:
Führen Sie Befehle als php app $command $action $parameters
Das Framework kann mit Composer in Ihr Projekt aufgenommen werden. Run composer require uhi67/umvc:dev-master . Neues, leeres Projekt kann mit composer create-project --prefer-dist uhi67/umvc-app name erstellt werden. Dadurch werden Ihnen eine neue leere Anwendung mit dem UMVC -Framework in das benannte Verzeichnis geliefert. Wählen Sie einen beliebigen Namen, den Sie bevorzugen.
Warnung: Dieser Teil ist im Bau. Erfahren Sie mehr über die genannten Klassen im Dokument der Klassendefinition.
composer.json Ihrer Anwendung und schließen Sie uh67/umvc , z. B. composer init --name myname/myapp --require uhi67/umvc:* .composer update aus.vendor/uh67/umvc/app in das Root Ihrer Anwendung. Dies ist der Launcher der CLI -Befehle.vendor/uh67/umvc/www/index.php und .htaccess in das WWW -Verzeichnis Ihrer Anwendung. Dies ist der Router der Webschnittstelle.config/config.php . Siehe Vorlage in vendor/uh67/umvc/config/config-template.php .runtime , um temporäre Dateien zu platzieren.www/assets -Verzeichnis, um zwischengespeicherte Asset -Dateien verschiedener Komponenten zu platzieren. controllers mit appcontrollers Namespace und leiten Sie sie von uhi67umvcController ab.views DIR, im einfachen PHTML -Format, und organisieren Sie sie gemäß den views/controller/action.php -Struktur.models . Datenbankmodelle sind uhi67umvcModel , datenbanklose Modelle sind uhi67umvcBaseModel . migrations ein.views/layouts -Verzeichnis. Ansichten können andere teilweise Ansichten aufrufen.commands definieren, die von uhi67umvcCommand abgeleitet werden. Es gibt einen integrierten Befehl im Framework. Der Befehl php app listet alle verfügbaren Befehle auf, die sowohl integrierte als auch benutzerdefinierte Befehle sind.messges/la.php in denen "la" die Sprache ist, die Sie übersetzen möchten. Alle Komponenten, die meisten UMVC -Klassen, einschließlich der Haupt -App -Klasse selbst, sind eine uhi67umvcComponent . Component implementiert Eigenschaftsfunktionen : Magic Getter und Setter verwenden GetProperty- und SetProperty -Methoden. Component ist konfigurierbar : Konstruktor akzeptiert ein Konfigurationsarray, das Werte für öffentliche Eigenschaften enthält.
MySqlConnection - Um eine Verbindung zur Datenbank herzustellen. Beinhaltet SQL Query Builder. Derzeit die einzige Implementierung der Connection .FileCache - Die einzige Implementierung von CacheInterface .SamlAuth - Die einzige Implementierung für AuthManager .L10n -Einfache Lokalisierung, Standardautomatik, übersetzt nur UMVC-Nachrichten.L10nFile -Die dateibasierte Lokalisierung zur Übersetzung von Nachrichten Ihrer Anwendung. Form -ein Widget mit integrierter Ansicht, um HTML-Formulare mit Ihren Modellen anzuzeigen und zu verarbeiten.Grid (Widget, aber die integrierte Ansicht fehlt noch)-um paginierte, gefilterte Modelle Listen anzuzeigen.Query - repräsentiert eine parametrisierte und flexible SQL -Abfrage in der PHP -Struktur. Der Befehl SQL kann daraus erstellt werden.Request - stellt die HTTP -Anforderung dar, kann zum Abholen von GET und nach Postparametern verwendet werden.Session - repräsentiert die aktuelle PHP -Sitzung, kann verwendet werden, um Variablen zu erhalten und festzulegen. Das einzelne Eintragskript für die Webanwendung ist www/index.php . Das einzelne Eintragskript für die CLI -Anwendung ist jeweils die app -Datei. Beide müssen aus dem vendor/uhi67/umvc/ Verzeichnis in Ihr Anwendungsverzeichnis kopiert werden.
Die www/.htaccess -Regeln leiten alle nicht gegründeten Anforderungen an www/index.php um. Statische Vermögenswerte werden jedoch direkt aus dem WWW -Verzeichnis bedient. Erfahren Sie später mehr über das Servieren von Bibliotheksvermögen.
Der index.php initialisiert den Autoloader, lädt die Hauptkonfiguration und erstellt das Hauptobjekt (Klasse in der Konfiguration definiert, normalerweise uhi67/umvc/App oder dessen Nachkommen). Die Hauptkonfiguration folgt den Regeln der konfigurierbaren Component .
Alle URL, die als https: // myapp/acontroller/anaction gebildet werden, wird auf folgende Weise verarbeitet:
uhi67/umvc/App analysiert die Anforderung, berechnet die tatsächliche Controller -Klasse (abgeleitet von uhi67/umvc/Controller ), erstellt den Controller und führt die angeforderte Aktionsmethode aus. Wie im obigen Beispiel bezieht sich Acontroller auf Ihre Controller -Klasse in Ihrem controllers -Verzeichnis als AcontrollerController , und Anaction bezieht sich auf die Aktionsmethode (als ActionAnaction ).
Wenn der Aktionsname in der URL fehlt, wird der actionDefault ausgeführt. Wenn auch der Controller -Name fehlt, wird der konfigurierte MainController verwendet. Es ist auch möglich, eine URL mit einem Aktionsnamen des Standardcontrollers zu erstellen, ohne den Controller -Namen anzugeben - die einzige Einschränkung, die Sie keinen Controller mit demselben Namen wie in dieser Aktion haben können.
Der als php app acontroller/anaction gebildete Al -Cli -Befehl wird auf folgende Weise verarbeitet:
uhi67/umvc/App analysiert die Anforderung, berechnet die tatsächliche Controller -Klasse (abgeleitet von uhi67/umvc/Command ), erstellt den Controller und führt die angeforderte Aktionsmethode aus. Wie im obigen Beispiel bezieht sich Acontroller auf Ihre Controller -Klasse in Ihrem commands als AcontrollerController , und Anaction bezieht sich auf die Aktionsmethode (als ActionAnaction ). Integrierte Befehle können auf die gleiche Weise ausgeführt werden. Ein Befehl mit demselben Namen in unserer Anwendung überschreibt den integrierten Befehl.
Auf die Teile der aktuellen URL -Anfrage können zugegriffen werden als:
Verwenden Sie eine der folgenden:
In Ihren Ansichtsdateien können Sie Ihre statischen Assets, die sich im www -Verzeichnis befinden, auf statische Weise verweisen, z. B. <link href="/assets/css/app.css" rel="stylesheet"> . Wenn Sie sich im Gegenteil auf eine Vermögensdatei beziehen möchten, die sich irgendwo in der Komponisten-Herstellerbibliothek befindet, können Sie sie auf diese Weise verwenden:
<script src="<?= $this->linkAssetFile('npm-asset/bootstrap/dist', 'js/bootstrap.bundle.min.js') ?>"></script> Die linkAssetFile -Funktion kopiert alle Dateien aus dem Verzeichnis im ersten Argument in das Verzeichnis asset cache unter der www und erstellt eine gültige URL für das zweite Argument. Hinweis: Das erste Argument identifiziert ein Vermögenspaket. Nur der erste Anruf für ein Paket kopiert die Dateien. Alle nachfolgenden Aufrufe desselben Pakets generieren nur den Link für die Datei.
Der Asset -Cache wird vom Befehl composer install geleert. Der Asset -Cache ist immer www/asset/cache und nicht konfigurierbar.
...
Dieses Repository enthält eine integrierte Testanwendung für interne Codecception-Unit-Tests. Der einzige Zweck der Test -App im tests ist es, Unit -Tests auszuführen und nicht mit einer Stichprobenanwendung zu beginnen.
git clonecomposer updatetests/_data/test-config.php basierend auf der Vorlageumvc-test gemäß den Datenbankeinstellungen in tests/_data/test-config.phpphp vendor/bin/codecept run unit für Unit -Tests ausWeitere Unit -Tests kommen ...
Eine integrierte Dockerized-Testumgebung kann verwendet werden, um mit unterschiedlichen PHP- und Datenbankversionen zu testen.
Schritte:
tests/docker-compose.yml (erstellen Sie Klone dieser Vorlagendatei).tests/docker/Dockerfile (Erweiterungsinstallationsschritte können sich ändern).tests/.envdocker compose up --build -d (in den tests Dir).docker exec -it umvc-php-1 php vendor/bin/codecept run unit