- Add DISCOVERY_LOG_LEVEL=debug - Add DISCOVERY_SHOW_PROGRESS=true - Temporary changes for debugging InitializerProcessor fixes on production
8.6 KiB
Erste Schritte
Diese Anleitung führt Sie durch die ersten Schritte mit dem Framework, nachdem Sie es installiert und konfiguriert haben.
Projektstruktur
Zunächst sollten Sie sich mit der Projektstruktur vertraut machen:
my-project/
├── bin/ # Ausführbare Skripte
├── config/ # Konfigurationsdateien
├── docs/ # Dokumentation
├── public/ # Öffentlich zugängliche Dateien
│ ├── index.php # Einstiegspunkt für die Anwendung
│ ├── assets/ # Kompilierte Assets (CSS, JS)
│ └── uploads/ # Hochgeladene Dateien
├── resources/ # Quellressourcen
│ ├── css/ # CSS-Dateien
│ ├── js/ # JavaScript-Dateien
│ └── views/ # Template-Dateien
├── src/ # PHP-Quellcode
│ ├── Application/ # Anwendungsspezifischer Code
│ │ ├── Controllers/ # Controller
│ │ ├── Models/ # Modelle
│ │ └── Services/ # Services
│ └── Framework/ # Framework-Code
│ ├── Core/ # Kernkomponenten
│ ├── Database/ # Datenbankabstraktion
│ └── Http/ # HTTP-Komponenten
├── storage/ # Speicher für Anwendungsdaten
│ ├── cache/ # Cache-Dateien
│ ├── logs/ # Log-Dateien
│ └── uploads/ # Hochgeladene Dateien
├── tests/ # Testdateien
├── vendor/ # Composer-Abhängigkeiten
├── .env # Umgebungsvariablen
├── composer.json # Composer-Konfiguration
├── console.php # Kommandozeilen-Interface
└── README.md # Projektdokumentation
Erstellen einer einfachen Seite
Lassen Sie uns eine einfache Seite erstellen, um zu sehen, wie das Framework funktioniert.
1. Erstellen eines Controllers
Erstellen Sie eine neue Datei src/Application/Controllers/WelcomeController.php:
<?php
namespace App\Application\Controllers;
use App\Framework\Http\Controller;
use App\Framework\Http\Request;
use App\Framework\Http\Response;
class WelcomeController extends Controller
{
public function index(Request $request): Response
{
return $this->view('welcome', [
'title' => 'Willkommen',
'message' => 'Willkommen beim Framework!',
]);
}
}
2. Erstellen einer View
Erstellen Sie eine neue Datei resources/views/welcome.php:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= $title ?></title>
<link rel="stylesheet" href="/assets/css/app.css">
</head>
<body>
<div class="container">
<h1><?= $title ?></h1>
<p><?= $message ?></p>
</div>
<script src="/assets/js/app.js"></script>
</body>
</html>
3. Definieren einer Route
Öffnen Sie die Datei config/routes.php und fügen Sie eine neue Route hinzu:
<?php
use App\Application\Controllers\WelcomeController;
use App\Framework\Routing\Router;
return function (Router $router) {
$router->get('/', [WelcomeController::class, 'index']);
};
4. Testen der Anwendung
Starten Sie den eingebauten Entwicklungsserver:
php console.php serve
Öffnen Sie dann Ihren Browser und navigieren Sie zu http://localhost:8000. Sie sollten Ihre neue Seite sehen.
Erstellen einer API-Endpunkt
Lassen Sie uns einen einfachen API-Endpunkt erstellen.
1. Erstellen eines API-Controllers
Erstellen Sie eine neue Datei src/Application/Controllers/Api/UserController.php:
<?php
namespace App\Application\Controllers\Api;
use App\Framework\Http\Controller;
use App\Framework\Http\Request;
use App\Framework\Http\Response;
class UserController extends Controller
{
public function index(Request $request): Response
{
$users = [
['id' => 1, 'name' => 'Max Mustermann'],
['id' => 2, 'name' => 'Erika Musterfrau'],
];
return $this->json($users);
}
public function show(Request $request, int $id): Response
{
$users = [
1 => ['id' => 1, 'name' => 'Max Mustermann'],
2 => ['id' => 2, 'name' => 'Erika Musterfrau'],
];
if (!isset($users[$id])) {
return $this->json(['error' => 'Benutzer nicht gefunden'], 404);
}
return $this->json($users[$id]);
}
}
2. Definieren von API-Routen
Fügen Sie in der Datei config/routes.php die folgenden Routen hinzu:
$router->group('/api', function (Router $router) {
$router->get('/users', [UserController::class, 'index']);
$router->get('/users/{id}', [UserController::class, 'show']);
});
Vergessen Sie nicht, den Controller zu importieren:
use App\Application\Controllers\Api\UserController;
3. Testen der API
Starten Sie den Entwicklungsserver und testen Sie die API mit einem HTTP-Client wie curl:
curl http://localhost:8000/api/users
curl http://localhost:8000/api/users/1
Arbeiten mit der Datenbank
Das Framework bietet eine einfache Datenbankabstraktion. Hier ist ein Beispiel für die Arbeit mit der Datenbank:
1. Erstellen eines Modells
Erstellen Sie eine neue Datei src/Application/Models/User.php:
<?php
namespace App\Application\Models;
use App\Framework\Database\Model;
class User extends Model
{
protected string $table = 'users';
protected array $fillable = ['name', 'email', 'password'];
protected array $hidden = ['password'];
}
2. Erstellen einer Migration
Erstellen Sie eine neue Migration mit dem Konsolenbefehl:
php console.php db:migration:create create_users_table
Dies erstellt eine neue Datei in migrations/. Bearbeiten Sie die Datei:
<?php
use App\Framework\Database\Migration;
use App\Framework\Database\Schema\Blueprint;
class CreateUsersTable extends Migration
{
public function up(): void
{
$this->schema->create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->timestamps();
});
}
public function down(): void
{
$this->schema->dropIfExists('users');
}
}
3. Ausführen der Migration
Führen Sie die Migration aus:
php console.php db:migrate
4. Verwenden des Modells im Controller
Aktualisieren Sie den UserController:
<?php
namespace App\Application\Controllers\Api;
use App\Application\Models\User;
use App\Framework\Http\Controller;
use App\Framework\Http\Request;
use App\Framework\Http\Response;
class UserController extends Controller
{
public function index(Request $request): Response
{
$users = User::all();
return $this->json($users);
}
public function show(Request $request, int $id): Response
{
$user = User::find($id);
if (!$user) {
return $this->json(['error' => 'Benutzer nicht gefunden'], 404);
}
return $this->json($user);
}
public function store(Request $request): Response
{
$this->validate($request, [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|min:8',
]);
$user = User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => password_hash($request->input('password'), PASSWORD_DEFAULT),
]);
return $this->json($user, 201);
}
}
Fügen Sie eine neue Route hinzu:
$router->post('/api/users', [UserController::class, 'store']);
Nächste Schritte
Nachdem Sie die Grundlagen des Frameworks kennengelernt haben, können Sie sich mit den folgenden Themen befassen:
- Routing - Erfahren Sie mehr über das Routing-System
- Controller - Lernen Sie, wie Sie Controller effektiv einsetzen
- Validierung - Validieren Sie Benutzereingaben
- Datenbank - Arbeiten Sie mit der Datenbank
- Authentifizierung - Implementieren Sie Benutzerauthentifizierung
- Sicherheit - Schützen Sie Ihre Anwendung
Oder erkunden Sie die Komponenten des Frameworks, um mehr über die verfügbaren Funktionen zu erfahren.