Zum Inhalt springen

Installation

Die Anwendung DotApp wird nicht auf dem üblichen Weg über composer install installiert, weil sie keine Bibliothek ist, sondern eine vollständige Anwendung mit eigener Architektur. Gehen Sie stattdessen wie folgt vor:

1. Installieren Sie die Anwendung mit Git:

git clone https://github.com/dotsystems-sk/dotapp.git ./

Dieser Befehl klont das Repository in das aktuelle Verzeichnis.

Alternativ können Sie die ZIP-Datei herunterladen:

DotApp herunterladen

Entpacken Sie sie in das Verzeichnis, in dem die Anwendung liegen soll.

2. Einrichtung und Verwendung:

Nach dem Klonen oder Entpacken konfigurieren Sie die Anwendung nach Ihren Anforderungen (z. B. Datenbankkonfiguration, Umgebungseinstellungen usw.).

3. Composer verwenden:

Obwohl die Anwendung selbst nicht über Composer installierbar ist, können Sie Composer nach der Installation im Anwendungsverzeichnis nutzen, um zusätzliche Abhängigkeiten für Ihr Projekt hinzuzufügen. Führen Sie einfach aus:

composer require

Verzeichnisstruktur. Die Anwendungslogik liegt in app/modules/{ModuleName}/. app/parts/ ist der Framework-Kern.

project-root/
├── index.php                 # front controller
├── dotapper.php
├── app/
│   ├── config.php            # secrets, databases, drivers
│   ├── modules/              # your modules
│   │   └── HelloWorld/
│   │       ├── module.init.php
│   │       ├── module.listeners.php
│   │       ├── Controllers/
│   │       ├── Middleware/
│   │       ├── Models/
│   │       ├── views/
│   │       └── assets/
│   ├── parts/                # framework core — do not edit
│   ├── runtime/
│   └── vendor/
└── assets/
    └── modules/              # public files served from each module's assets/

Einrichtung nach der Installation

Dieser Abschnitt beschreibt die minimale Einrichtung nach der Installation des DotApp-Frameworks. Wenn Sie nicht mit Datenbanken arbeiten müssen oder eine eigene Lösung der integrierten Bibliothek vorziehen, folgen Sie einfach diesen Schritten:

1. (Optional) __ROOTDIR__ in index.php überschreiben

Standardmäßig setzt index.php __ROOTDIR__ auf das eigene Verzeichnis. Definieren Sie es nur, wenn das Anwendungsstammverzeichnis woanders liegt (ohne abschließenden Schrägstrich):

define('__ROOTDIR__', "/var/www/html");

Stellen Sie sicher, dass __ROOTDIR__ dem tatsächlichen Speicherort auf dem Server entspricht, andernfalls funktioniert das Framework möglicherweise nicht korrekt.


2. Legen Sie einen eindeutigen Verschlüsselungsschlüssel in ./app/config.php fest

Config::set("app", "name", "MyApp");
Config::set("app", "c_enc_key", "ReplaceThisWithALongRandomSecret");
$dotApp = new \Dotsystems\App\DotApp();

Verwenden Sie ein eindeutiges, langes Geheimnis (mindestens 32 Zeichen). Übergeben Sie kein md5(...) an den DotApp-Konstruktor.


3. (Optional) Datenbank — kommentieren Sie das Beispiel in ./app/config.php aus und füllen Sie es aus

use Dotsystems\App\Parts\Config;

if (!__MAINTENANCE__) {
    Config::addDatabase(
        "main",
        "127.0.0.1",
        "username",
        "password",
        "dbname",
        "UTF8",
        "MYSQL",
        "pdo"
    );
}

$dotApp = new \Dotsystems\App\DotApp();
$dotApp->load_modules();
            

Das Framework starten

Nachdem app/config.php die Module geladen hat, startet index.php die Anwendung. Routen werden in der module.init.php jedes Moduls deklariert. Der Startaufruf lautet:


// Everything ready? Start the framework! - As seen in the index.php file
$dotApp->davajhet();
// or in English:
$dotApp->run();

/*
    Note: $dotApp->davajhet() is an alias for $dotApp->run().
    I come from eastern Slovakia, so I added a bit of our "davaj het!" (let's go!)
*/
            

Die erste Route hinzufügen

Leere Seite und ERROR 404? Wenn Sie den Anweisungen gefolgt sind und nach dem Start eine leere Seite mit Statuscode 404 sehen, keine Sorge. Das ist logisch. Der Router ist leer, daher konnte er keine Route für die Adresse / in Ihrem Browser finden und hat korrekt eine 404 angezeigt. Ihr Framework hat noch keine Module oder Routen und verhält sich genau so, wie es soll. Fügen Sie die erste Route in der Methode initialize() eines Moduls hinzu.


<?php
// app/modules/HelloWorld/module.init.php
namespace Dotsystems\App\Modules\HelloWorld;

use Dotsystems\App\Parts\Router;

class Module extends \Dotsystems\App\Parts\Module
{
    public function initialize($dotApp)
    {
        Router::get("/", function ($request) {
            return "Hello World!";
        }, Router::STATIC_ROUTE);
    }

    public function initializeRoutes()
    {
        return ['/', '/*'];
    }
}

new Module($dotApp);
        

Nach dem Start sehen Sie eine Seite mit folgendem Inhalt:

Hello World!