Un cadre PHP léger
Un «cadre» PHP simple? Ou on peut dire qu'il s'agit d'un modèle d'application.
ORM utilise éloquente ORM, les itinéraires utilisent FastRoute
La plupart des conceptions d'interface se réfèrent à Laravel, qui adopte le mode de façade, le mode singleton, l'inversion de contrôle (CIO) et l'injection de dépendance (DI), et certains utilisent également d'autres modes de conception.
Conteneur IOC intégré, PSR-11 compatible
Prise en charge l'intégration avec ReactJS, et d'autres cadres frontaux sont également OK, mais j'ai écrit uniquement la configuration ReactJS.
Middleware qui prend en charge la norme PSR-15.
Demandes et réponses encapsulées, conçues selon la norme PSR-7, mais ont ajouté des interfaces de type Laravel.
Prend en charge la définition de l'injection de dépendance, du routage et du middleware par annotation
Il prend en charge AOP, mais comme il n'y a pas de méthode d'agent d'hérédité, la portée de la prise en charge de l'entrée est limitée. Actuellement, il prend en charge l'entrée du magasin et l'entrée du contrôleur. Dans le même temps, des méthodes correspondantes ont été ajoutées au conteneur pour fournir des fonctions d'entrée.
La raison pour laquelle le proxy d'héritage n'est pas utilisé est que PHP n'a pas d'interface de réflexion proxy similaire à celle de Java. Le proxy de l'héritage PHP doit utiliser EVAL ou nécessiter de déclarer dynamiquement la classe, qui présente un risque de sécurité.
Fournissez une simple implémentation d'observateur, bien que généralement inutile.
Utilisez APCU pour mettre en cache les annotations
Il fournit une mise en œuvre d'une file d'attente de tâches, similaire à une coroutine, qui peut être abandonnée de manière proactive, mais comme PHP n'a pas de mécanisme multi-threading, il ne peut pas atteindre le non-blocage.
Puisque vous écrivez ce type de projet pour la première fois, il y aura de nombreux défauts et vulnérabilités de conception. Il n'est pas recommandé d'utiliser le projet dans un environnement de production, juste pour l'apprentissage. Si vous avez de meilleures suggestions ou trouvez des lacunes, n'hésitez pas à faire des commentaires.
Le but de la rédaction de ce projet est de se préparer au prochain projet de blog, car il n'y a pas de cadre à utiliser, donc ce projet 2333 a été créé.
git clone https://github.com/syfxlin/xkphp.gitcomposer install Dans certains cas, laminas/laminas-httphandlerrunner ne peuvent pas être installées normalement. Pour le moment, vous devez d'abord installer laminas/laminas-diactoros .
yarnphp -r " echo base64_encode(openssl_random_pseudo_bytes(32)); "composer migration:upphp -S 0.0.0.0:8000 -t publicAucun encore
XK-PHP est écrit et maintenu à l'aide d'Otstar Lin et des contributeurs suivants.
OTSTAR LIN -SIDE PERSONNEL · Blog · GitHub
Open source sous la licence Apache Licence 2.0.