FastSitePHP FastSitePHP FastSitePHP

FastSitePHP Rocketship FastSitePHP Rocketship PHP

Un framework Open Source moderne pour la création de sites Web et d'API hautes performances avec PHP

  • De meilleurs Sites

    De meilleurs Sites

    FastSitePHP a été conçu pour des performances rapides, une flexibilité de codage, une stabilité à long terme, une facilité d'utilisation et une meilleure expérience de développement globale. En utilisant FastSitePHP, vous pouvez créer de meilleurs sites plus rapidement que jamais.

  • Belle Performance

    Belle Performance

    Avec FastSitePHP, des pages complexes peuvent être générées en des milliers de secondes en utilisant seulement une petite quantité de mémoire. Ce niveau de performances permet même aux sites de s'exécuter rapidement sur des ordinateurs peu puissants.

  • Facile à configurer et à utiliser

    Facile à configurer et à utiliser

    FastSitePHP est conçu pour être facile à installer sur n'importe quel système d'exploitation, facile à lire le code, facile à développer et bien plus encore. Avec FastSitePHP, des sites Web et des applications de haute qualité peuvent être développés à un rythme rapide en utilisant moins de lignes de code et une configuration minimale.

  • Rapide à apprendre et à déboguer

    Rapide à apprendre et à déboguer

    FastSitePHP est bien documenté et est livré avec des exemples pratiques. FastSitePHP fournit des messages d'erreur conviviaux pour les développeurs afin que les erreurs puissent être corrigées rapidement même si vous avez peu ou pas d'expérience en programmation avec PHP.

  • Une sécurité renforcée

    Une sécurité renforcée

    La sécurité a été soigneusement planifiée dans toutes les fonctionnalités de FastSitePHP afin qu'elle soit à la fois sécurisée et facile à utiliser. Les fonctionnalités de sécurité incluent le cryptage (texte, objets et fichiers), les cookies signés, JWT, CORS, la validation du serveur proxy, la limitation du débit, etc.

  • Tests unitaires basés sur le Web

    Tests unitaires basés sur le Web

    La plupart des frameworks sont testés à partir de l'ordinateur d'un développeur à l'aide d'outils CLI spéciaux; cependant, cela ne garantit pas que cela fonctionnera dans votre environnement. FastSitePHP fournit une méthode de test basée sur le Web afin que tout le code et la vitesse des pages puissent être facilement confirmés dans n'importe quel environnement.

Exemple de Code

<?php

// -------------------------------
// Installer
// -------------------------------

// Configurer un chargeur automatique PHP
// Cela permet aux classes d'être chargées dynamiquement
require '../vendor/autoload.php';

// OU pour un site minimal, seuls les 2 fichiers suivants doivent être inclus
// require '../vendor/fastsitephp/src/Application.php';
// require '../vendor/fastsitephp/src/Route.php';

// Créer l'objet d'application avec gestion des erreurs et UTC 
// pour le fuseau horaire
$app = new \FastSitePHP\Application();
$app->setup('UTC');

// -------------------------------
// Définir des itinéraires
// -------------------------------

// Envoyer une réponse de "Bonjour le Monde!" pour les demandes par défaut
$app->get('/', function() {
    return 'Bonjour le Monde!';
});

// Envoyer une réponse "Bonjour le Monde!" pour l'URL '/bonjour' ou
// dans le cas de la variable optionnelle [nom] échapper en toute sécurité
// et retourner un message avec le nom
// (exemple: '/bonjour/FastSitePHP' affichera 'Bonjour le FastSitePHP!')
$app->get('/bonjour/:nom?', function($nom = 'Monde') use ($app) {
    return 'Bonjour le ' . $app->escape($nom) . '!';
});

// Envoyer une réponse JSON contenant un objet avec
// des informations de base sur le site
$app->get('/site', function() use ($app) {
    return [
        'rootUrl' => $app->rootUrl(),
        'rootDir' => $app->rootDir(),
        'requestedPath' => $app->requestedPath(),
    ];
});

// Envoyer une réponse JSON contenant des informations de demande de base
$app->get('/request', function() {
    $req = new \FastSitePHP\Web\Request();
    return [
        'acceptEncoding' => $req->acceptEncoding(),
        'acceptLanguage' => $req->acceptLanguage(),
        'origin' => $req->origin(),
        'userAgent' => $req->userAgent(),
        'referrer' => $req->referrer(),
        'clientIp' => $req->clientIp(),
        'protocol' => $req->protocol(),
        'host' => $req->host(),
        'port' => $req->port(),
    ];
});

// Envoyer le contenu de ce fichier sous forme de réponse en texte brut
// à l'aide d'en-têtes de réponse HTTP qui permettent à l'utilisateur
// final de mettre en cache la page jusqu'à ce que le fichier soit modifié
$app->get('/cached-file', function() {
    $file_path = __FILE__;
    $res = new \FastSitePHP\Web\Response();
    return $res->file($file_path, 'text', 'etag:md5', 'private');
});

// Renvoyez l'adresse IP de l'utilisateur en tant que service Web JSON qui
// prend en charge le partage de ressources d'origine croisée (CORS) et
// indique spécifiquement au navigateur de ne pas mettre en cache les
// résultats. Dans cet exemple, le serveur Web est supposé être derrière un
// serveur proxy (par exemple un équilibreur de charge) et l'adresse IP est
// lue en toute sécurité à partir de celui-ci. De plus, la fonction cors() est
// appelée à partir d'une fonction de filtrage qui n'est appelée que si la
// route est mise en correspondance et permet un traitement correct d'une
// demande OPTIONS.
$app->get('/whats-my-ip', function() {
    $req = new \FastSitePHP\Web\Request();
    return [
        'ipAddress' => $req->clientIp('from proxy', 'trust local'),
    ];
})
->filter(function() use ($app) {
    $app
        ->noCache()
        ->cors('*');
});

// Définissez une fonction qui renvoie true si la demande Web provient
// d'un réseau local (par exemple 127.0.0.1 ou 10.0.0.1). Cette fonction
// sera utilisée dans un filtre pour afficher ou masquer les itinéraires.
$is_local = function() {
    // Comparer l'IP de demande à l'aide du
    // Classless Inter-Domain Routing (CIDR)
    $req = new \FastSitePHP\Web\Request();
    $private_ips = \FastSitePHP\Net\IP::privateNetworkAddresses();

    return \FastSitePHP\Net\IP::cidr(
        $private_ips, 
        $req->clientIp('from proxy')
    );
};

// Fournissez des informations détaillées sur l'environnement à partir de PHP
// pour les utilisateurs qui demandent la page à partir d'un réseau local.
// Si la demande provient d'une personne sur Internet, une «Page non trouvée»
// de réponse 404 sera retournée. L'appel de [phpinfo()] génère une réponse
// HTML afin que la route n'ait rien à renvoyer.
$app->get('/phpinfo', function() {
    phpinfo();
})
->filter($is_local);

// Fournir une réponse texte avec des informations
// sur le serveur pour les utilisateurs locaux
$app->get('/server', function() {
    $config = new \FastSitePHP\Net\Config();
    $req = new \FastSitePHP\Web\Request();
    $res = new \FastSitePHP\Web\Response();
    return $res
        ->contentType('text')
        ->content(implode("\n", [
            "Host: {$config->fqdn()}",
            "Server IP: {$req->serverIp()}",
            "Network IP: {$config->networkIp()}",
            str_repeat('-', 80),
            $config->networkInfo(),
        ]));
})
->filter($is_local);

// Si l'url demandée commence par '/ examples', chargez un fichier PHP pour
// les routes correspondantes depuis le répertoire courant. Il s'agit d'un
// vrai fichier qui fournit de nombreux autres exemples. Si vous téléchargez
// ce site, ce code et d'autres exemples peuvent être trouvés dans
// [app_data/sample-code].
$app->mount('/examples', 'home-page-en-examples.php');

// -------------------------------
// Exécutez l'application
// -------------------------------
$app->run();