J'ai beaucoup d'idées pour cet article, mais je ne sais pas par où commencer. Si vous souhaitez rendre le code plus lisible et utiliser le tremblement d'arbre, vous devriez absolument consulter l'article.
Si vous avez déjà développé avec JavaScript, vous avez probablement rencontré ce type de code.
const someInstance = new Class(); someInstance.do('jump').some().thing('dance').and().read();
J'aime ce style car il pourrait être très facile à lire et on voit ce qui est connecté. De plus, vous n'avez pas besoin de déplacer les données d'une fonction à une autre car elles sont toutes enregistrées dans l'instance.
En plus du fait que cela ne fonctionne que si les fonctions ne sont pas asynchrones, il y a un autre problème. Il ne sera pas facile de modifier l'arborescence du contenu si vous ne l'utilisez pas. Si vous l'utilisez dans le client, vous devez déplacer toute la bibliothèque avec toutes les fonctions connectées, ce qui représente une énorme surcharge.
Alors, comment pouvons-nous garder les choses lisibles, utiliser des fonctions asynchrones et laisser Vite et co. arbre secouer tout le code inutilisé ?
La réponse est là, dans le titre : "tuyau".
D'un point de vue fonctionnel, l'implémentation de pipe est assez simple. Cependant, les types posaient un défi. J'ai tout rassemblé dans une bibliothèque et je l'ai publié sur npm. canaliser et combiner.
const inc = (by: number) => (x: number) => x + by; const dec = (by: number) => (x: number) => x - by; const multiplyBy = (by: number) => (x: number) => x * by; const divideBy = (by: number) => (x: number) => x / by; const toStr = () => (x: number) => x.toString(); // prepare the pipeline const pipeline = pipe(inc(2), multiplyBy(7), dec(7), divideBy(3), toStr()) // Executing the pipeline pipeline(7)
Un avantage est qu'il n'est lié à aucun objet, vous pouvez donc utiliser n'importe quelle fonction tant que l'entrée et la sortie correspondent à la fonction avant et après.
L'exemple que j'ai donné est assez simple, mais au moins vous pouvez tout canaliser. Vous aurez les mêmes options qu'avec le chaînage et les classes. Les fonctions génériques sont peut-être un peu plus délicates, mais il existe une solution. J'aborderai cela plus en détail dans un autre article.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!