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