Comme alternative à Siler, quelque chose de léger et simple qui fonctionne comme une bibliothèque avec Swoole prête à l'emploi, je recommande fortement Nano ! Découvrez-le : https://nano.hyperf.wiki/#/en/
Siler est un ensemble d'abstractions générales de haut niveau visant une API de programmation déclarative en PHP.
Fichiers et fonctions en tant que citoyens de première classe
Zéro dépendance , tout est au dessus des fonctions intégrées de PHP
Ultra-rapide , sans frais généraux supplémentaires - benchmark 1 , benchmark 2 et benchmark 3
Fichiers plats et fonctions PHP classiques fonctionnant sur un serveur HTTP de qualité production, hautes performances, évolutif, simultané et non bloquant.
Lisez le tutoriel.
le compositeur a besoin de leocavalcante/siler
C'est tout. En fait, Siler est une bibliothèque, pas un framework (peut-être un micro-framework), le flux global de contrôle du programme est dicté par vous. Donc, pas de configurations cachées ni de structures de répertoires prédéfinies.
utilisez SilerFunctional comme λ ; // Juste pour être cool, n'utilisez pas d'identifiants non-ASCII ;)use SilerRoute;Routeget('/', λputs('Hello, World!'));
Rien de plus, rien de moins. Vous n'avez même pas besoin de dire à Siler de run
ou quelque chose comme ça ( puts
fonctionne comme un echo
évalué paresseusement).
utilisez SilerRoute;utilisez SilerHttpResponse;Routeget('/', fn() => Responsejson(['message' => 'Bonjour le monde !']));
La fonction Responsejson
ajoutera automatiquement Content-type: application/json
dans les en-têtes de réponse.
Siler fournit un support de première classe pour Swoole. Vous pouvez régulièrement utiliser les modules Route
, Request
et Response
pour un serveur HTTP Swoole.
utilisez SilerHttpResponse;utilisez SilerRoute;utilisez SilerSwoole;$handler = function () {Routeget('/', fn() => Responsejson('Bonjour le monde !')); };$port = 8000;echo "Écoute sur le port $portn";Swoolehttp($handler, $port)->start();
Installez la dépendance entre pairs :
le compositeur nécessite webonyx/graphql-php
tapez Requête {bonjour : chaîne}
utilisez SilerRoute;utilisez SilerGraphQL;$type_defs = file_get_contents(__DIR__ . '/schema.graphql');$resolvers = ['Query' => ['hello' => fn ($root, $args, $context, $info) => 'Bonjour tout le monde !'] ];$schema = GraphQLschema($type_defs, $resolvers);Routepost('/graphql', fn() => GraphQLinit($schema));
Une autre dépendance entre pairs :
le compositeur nécessite une doctrine/des annotations
Alors:
/** * @SilerGraphQLAnnotationObjectType() */requête de classe finale {/** * @SilerGraphQLAnnotationField() */public static function hello($root, $args, $context, $info): string{return 'Bonjour le monde !'; } }
utilisez SilerGraphQL;utilisez SilerRoute;$schema = GraphQLannotated([Query::class]);Routepost('/graphql', fn() => GraphQLinit($schema));
Le nom du type d'objet sera deviné à partir du nom de la classe, de même pour le nom du champ, et son type de retour (c'est-à-dire : scalaire string
PHP ===
scalaire String
GraphQL).
Documentation
Exemples
Licence MIT
Copyright 2020 © LC