Symlex vise à simplifier le développement Web agile en fournissant un système de travail qui favorise les meilleures pratiques par l'exemple:
Depuis sa sortie initiale en 2014, il s'est avéré bien adapté pour la construction rapide des microservices, des CLI et des applications à une seule page. Il est livré avec des exemples de travail du test aux formulaires et à l'abstraction de la base de données. Supprimez simplement ce dont vous n'avez pas besoin.
Le noyau est minuscule et ne crée qu'un conteneur de service pour bootstrap votre application dans son contexte. L'utilisation d'un seul conteneur pour la configuration et l'injection de dépendance réduit la complexité et conduit à des performances améliorées par rapport à d'autres cadres. Il empêche également les développeurs d'installer sans réfléchir sans les comprendre. Le résultat est moins de ballonnement et un code plus simple, plus maintenable et testable qui est fondamental pour le développement agile.
Les classes simples sont utilisées dans la mesure du possible pour éviter le verrouillage des fournisseurs et activer la réutilisation du code indépendant du Framework. Voir compromis.md.
Vous pouvez combiner le backend basé sur PHP avec n'importe quelle bibliothèque JavaScript ou client REST. La buissier frontal est là pour votre commodité et vous met directement sur la bonne voie pour construire des applications impressionnantes à une page avec WebPack et Vuetify, voir Demo.Symlex.org. Un exemple de travail pour les applications de ligne de commande est également inclus.
Notre documentation complète du framework est disponible sur docs.symlex.org. Tuzi Liu maintient une traduction chinoise pour nous.
Remarque: https://github.com/SyMlex/SyLlex-Core contient le noyau et les routeurs comme composants réutilisables.
Avant de commencer, assurez-vous que PHP 7.3+, compositeur et docker installés sur votre système (Howto pour Mac OS X). Exécutez get-composer.sh pour installer composer localement sur Linux. Au lieu d'utiliser Docker, vous pouvez configurer votre propre environnement d'exécution en fonction du Dockerfile existant. De plus, vous aurez besoin d'une base de données plus NodeJS et NPM pour construire le frontend.
Étape 1: Exécutez composer pour créer un nouveau projet Symlex:
composer create-project symlex/symlex myapp
Composer demandera des valeurs de configuration pour générer app/config/parameters.yml pour vous.
Assurez-vous que storage/cache est écrit afin que les fichiers de cache puissent être créés par l'application.
Étape 2: Démarrez Roadrunner et Mariadb à l'aide de docker-compose :
cd myapp
docker-compose up
Remarque: Cette configuration est à des fins de test et de développement uniquement, voir les commentaires dans docker-compose.yml pour plus de détails. Vous devrez peut-être le modifier si vous exécutez Docker avec un autre utilisateur pour des raisons de sécurité. Sur OS X, la version actuelle de Docker est vraiment lente à exécuter PHP à partir du système de fichiers de l'hôte. docker-compose up -d exécute Docker en arrière-plan, mais vous ne verrez pas des messages de journal utiles dans ce cas.
Étape 3: Laissez Initialiser la base de données et construisez les composants frontaux pour vous:
make terminal
make all database
Pour vérifier que tout fonctionne, exécutez make test .
Remarque: vous pouvez également utiliser cette approche pour exécuter d'autres commandes CLI plus tard. La fabrication doit être préinstallée dans des environnements de développement UNIX typiques - sinon vous devrez peut-être l'obtenir d'abord, par exemple en installant les outils de ligne de commande Xcode sur OS X via xcode-select --install ou en ajoutant le package build-base ou build-essential sur Linux. Le Makefile contient une liste de toutes les cibles.
Après une installation réussie, ouvrez le site à http: // localhost: 8081 / et connectez-vous en tant [email protected] en utilisant le mot de passe passwd .
Les fichiers YAML situés dans app/config Configurez l'application en fonction des paramètres et des services. Les fichiers de configuration principaux sont app/config/web.yml et app/config/console.yml .
Si vous ajoutez localhost-debug à vos /etc/hosts et accédez au site avec cela, il se chargera en mode débogage (vous verrez une trace de pile et d'autres informations de débogage sur les pages d'erreur).
L'interface utilisateur MailHog est disponible sur http: // localhost: 8025 /. Il peut être utilisé pour recevoir et afficher les mails envoyés automatiquement par le système, par exemple lorsque de nouveaux utilisateurs sont créés.
Si vous souhaitez créer une application plus légère, jetez un œil à nos autres exemples:
Documentation complète: https://docs.symlex.org/en/latest/framework/
Symlex comprend désormais Roadrunner - un serveur d'applications PHP haute performance - comme alternative à Nginx. Il sera automatiquement téléchargé lors de la création de l'image Docker.
Nos instructions d'installation pour Symlex> = 4.4.0 ne fonctionneront pas pour les versions précédentes car elles utilisent toujours NGINX et PHP-FPM. Au lieu de web et php , il y a maintenant un seul service app propulsé par Roadrunner. Si vous préférez Nginx, vous pouvez utiliser une version plus ancienne ou copier la configuration précédente dans la nouvelle version. Certaines de nos exemples d'applications utilisent également Nginx.
Symlex est maintenu par Michael Mayer et vise à simplifier le développement Web agile en fournissant un système de travail qui favorise les meilleures pratiques par exemple. Michael a publié son premier cadre PHP en 2001 et a travaillé avec divers principaux fournisseurs de cadre dans le passé. La construction de cela n'aurait pas été possible sans beaucoup de travaux antérieurs par d'autres développeurs. Merci à ceux et à tous ceux qui ont contribué!
Le choix est l'ennemi de la productivité. Autrement dit, si votre solution fait tout et n'a aucune opinion sur quoi que ce soit, alors elle ne résout rien. - Asim Aslam
N'hésitez pas à envoyer un e-mail à [email protected] si vous avez des questions, avez besoin d'un support commercial ou si vous voulez simplement dire bonjour. Nous accueillons les contributions de toute nature. Si vous avez un bug ou une idée, lisez notre guide avant d'ouvrir un problème.
Il est évident que les performances du cadre PHP dépend principalement des lignes de code qui doivent être exécutées pour chaque demande. Alors que Symlex a été conçu pour être simple et maigre, une bonne performance est un sous-produit très important de cette approche.
Le meilleur code n'est pas un code. Là où il n'y a pas de code, il n'y a pas de bogues. Aucune API à apprendre. Pas d'interface utilisateur maladroite. Les meilleurs refacteurs sont les suppressions. - Eric Elliott
Comme publié par phpbenchmarks.com, les demandes de repos sont plus de 40% plus rapides par rapport aux autres cadres PHP courants:
Notez que ces temps de réponse ont été mesurés en mode de production entièrement optimisé sur le matériel de serveur rapide avec seulement 5 demandes simultanées. Dans la pratique, les différences pourraient être beaucoup plus importantes en termes de temps absolu. La consommation de mémoire doit également être prise en compte:
Pourquoi devriez-vous vous soucier? Tout d'abord, vos utilisateurs l'adoreront. En règle générale, 100 ms concerne la limite pour les faire sentir que le système réagit instantanément, ce qui signifie qu'aucun rétroaction spéciale n'est nécessaire, sauf pour afficher le résultat. Le temps de réponse total comprend également le réseau (~ 25 ms), le navigateur et d'autres frais généraux, ce qui ne laisse qu'une petite fraction de ces 100 ms pour implémenter la logique commerciale réelle. Deuxièmement, vous économiserez beaucoup d'argent pour l'infrastructure de serveur et les développeurs sont plus productifs car les tests fonctionnent plus rapidement.
Symlex a été lancé en 2014 en tant que simple passe-partout Silex, car Silex lui-même n'est pas livré avec une "édition standard" qui vous pointe dans la bonne direction. L'utilisation de Silex au lieu de Symfony a été recommandée par Sensiolabs (les créateurs des deux cadres) comme une alternative légère à Symfony + Fosrestbundle pour créer rapidement des services de repos haute performance et des applications Web à une seule page.
Il a été rapidement remarqué que Pimple - le conteneur de service qui est livré avec Silex - se sent lourd pour les développeurs provenant de Symfony et rend difficile la réutilisation du code existant. De plus, de nombreux exemples de code Silex et même des applications du monde réel ont accédé au conteneur de service à partir de toutes les parties du code (pas seulement le cadre lui-même), ce qui contourne l'inversion du contrôle et conduit à une testabilité maladroite. Symlexe favorise donc l'utilisation stricte de l'injection de dépendance et combine la commodité d'un conteneur de service à part entière avec la vitesse d'un micro-travail.
Aujourd'hui, Symlex a son propre composant de routage (basé sur Symfony 4) et n'utilise plus Silex. Le cadre s'est avéré utile pour un grand nombre d'applications différentes. Certains d'entre eux étaient basés sur le noyau symfony ordinaire auparavant et ont fait le changement parce qu'ils se noyaient en complexité et souffraient de temps de réponse bien supérieurs à 30 secondes en mode de développement. Symlex les a ramenés sur la bonne voie sans de grandes modifications à leur base de code existante.
Symlex est un projet à but non lucratif géré entièrement par des bénévoles. Vous êtes les bienvenus pour nous soutenir via les sponsors GitHub, surtout si vous avez besoin d'aide à l'utilisation de notre logiciel. Ils correspondront à chaque don de la première année.
Veuillez laisser une étoile si vous aimez ce projet, il offre une motivation supplémentaire pour continuer. Merci beaucoup! <3