Als Alternative zu Siler, etwas Leichtem und Einfachem, das sofort als Bibliothek mit Swoole funktioniert, empfehle ich Nano wärmstens! Schauen Sie es sich an: https://nano.hyperf.wiki/#/en/
Siler ist eine Reihe allgemeiner Abstraktionen auf hoher Ebene, die auf eine API für die deklarative Programmierung in PHP abzielen.
Akten und Funktionen als Bürger erster Klasse
Keine Abhängigkeit , alles basiert auf den integrierten PHP-Funktionen
Blitzschnell , kein zusätzlicher Overhead – Benchmark 1 , Benchmark 2 und Benchmark 3
Flache Dateien und einfache PHP-Funktionen rocken auf einem produktionstauglichen, leistungsstarken, skalierbaren, gleichzeitigen und nicht blockierenden HTTP-Server.
Lesen Sie das Tutorial.
Komponist benötigt Leocavalcante/Siler
Das ist es. Tatsächlich ist Siler eine Bibliothek und kein Framework (vielleicht ein Mikro-Framework). Der gesamte Programmfluss und die Steuerung werden von Ihnen bestimmt. Also keine versteckten Konfigurationen oder vordefinierten Verzeichnisstrukturen.
Verwenden Sie SilerFunctional als λ; // Nur um cool zu sein, verwenden Sie keine Nicht-ASCII-Bezeichner ;)use SilerRoute;Routeget('/', λputs('Hello, World!')); Nicht mehr und nicht weniger. Sie müssen Siler nicht einmal sagen, dass run oder so etwas ( puts funktionieren wie ein träge ausgewertetes echo ).
use SilerRoute;use SilerHttpResponse;Routeget('/', fn() => Responsejson(['message' => 'Hello, World!'])); Die Responsejson Funktion fügt den Antwortheadern automatisch Content-type: application/json hinzu.
Siler bietet erstklassigen Support für Swoole. Sie können regelmäßig Route , Request und Response Module für einen Swoole-HTTP-Server verwenden.
use SilerHttpResponse;use SilerRoute;use SilerSwoole;$handler = function () {Routeget('/', fn() => Responsejson('Hello, World!'));
};$port = 8000;echo "Listening on port $portn";Swoolehttp($handler, $port)->start();Peer-Abhängigkeit installieren:
Composer benötigen webonyx/graphql-php
Typ Query {hello: String} use SilerRoute;use SilerGraphQL;$type_defs = file_get_contents(__DIR__ . '/schema.graphql');$resolvers = ['Query' => ['hello' => fn ($root, $args, $context, $info) => 'Hallo Welt!']
];$schema = GraphQLschema($type_defs, $resolvers);Routepost('/graphql', fn() => GraphQLinit($schema));Eine weitere Peer-Abhängigkeit:
Komponisten benötigen Doktrin/Anmerkungen
Dann:
/** * @SilerGraphQLAnnotationObjectType() */final class Query
{/** * @SilerGraphQLAnnotationField() */public static function hello($root, $args, $context, $info): string{return 'Hello, World!';
}
} use SilerGraphQL;use SilerRoute;$schema = GraphQLannotated([Query::class]);Routepost('/graphql', fn() => GraphQLinit($schema)); Der Objekttypname wird aus dem Klassennamen erraten, dasselbe gilt für den Feldnamen und seinem Rückgabetyp (z. B. PHP- string -Skalar === GraphQL String -Skalar).
Dokumentation
Beispiele
MIT-Lizenz
Copyright 2020 © LC