Maison > développement back-end > tutoriel php > Macros PHP pour le plaisir et le profit!

Macros PHP pour le plaisir et le profit!

William Shakespeare
Libérer: 2025-02-15 09:31:11
original
429 Les gens l'ont consulté

Utilisez la bibliothèque du préprocesseur Yay pour ajouter du sucre de syntaxe à PHP pour implémenter facilement un code plus élégant! Cet article montrera comment utiliser la bibliothèque Yay pour ajouter du sucre de syntaxe de tranche de type rubis pour PHP. $many[4..8]

Points de base:

    yay est une bibliothèque préprocesseur qui permet aux développeurs d'ajouter du sucre syntaxique à d'autres langues à PHP via des macros.
  • Yay divise la chaîne de code en balises, construit une arborescence de syntaxe abstraite (AST), puis remplace l'élément macro par un code PHP réel et réassemble le code PHP.
  • Bien qu'il existe certaines limites dans la portée et l'analyseur variables, Yay permet toujours la création d'un code PHP plus propre et plus efficace.
De nombreux développeurs PHP proviennent d'autres antécédents de langage de programmation et sont habitués à une syntaxe concise dans d'autres langues. La bibliothèque Yay a été créée pour résoudre ce problème. Par exemple, dans Ruby, nous pouvons utiliser

pour obtenir les deuxième, troisième et quatrième éléments d'un tableau few = many[1..3]. Et dans PHP, nous devons utiliser many pour atteindre la même fonction. De toute évidence, la syntaxe de Ruby est plus concise et élégante. $few = array_slice($many, 1, 3);

PHP Macros for Fun and Profit!

pour utiliser les macros:

Tout d'abord, nous devons installer la bibliothèque Yay:

$ composer require yay/yay:dev-master
Copier après la connexion
Ensuite, nous créons un fichier appelé

avec le code suivant: array_slice.yphp

macro {
    T_VARIABLE·A[
        ···range
    ]
} >> {
    eval(
        '$list = ' . →(T_VARIABLE·A) . ';' .
        '$lower = ' . explode('..', →(···range))[0] . ';' .
        '$upper = ' . explode('..', →(···range))[1] . ';' .
        'return array_slice($list, $lower, $upper - $lower);'
    )
}

macro {
    →(···expression)
} >> {
    ··stringify(···expression)
}


$many = [
    "She walks in beauty",
    "like the night",
    "of cloudless climes",
    "and starry skies",
    "And all that's best",
    "of dark and bright",
    "meet in her aspect",
    "and her eyes",
    "...",
];

$lower = 4;
$upper = 8;

$few = $many[$lower..$upper];
Copier après la connexion
Ensuite, utilisez le compilateur Yay pour convertir le fichier

en code PHP standard: .yphp

$ vendor/bin/yay array_slice.yphp >> array_slice.php
Copier après la connexion
Le fichier généré

contiendra ce qui suit (peut différer légèrement, selon la version yay): array_slice.php

$many = [
    "She walks in beauty",
    "like the night",
    "of cloudless climes",
    "and starry skies",
    "And all that's best",
    "of dark and bright",
    "meet in her aspect",
    "and her eyes",
    "...",
];

$lower = 4;
$upper = 8;

$few = eval(
    '$list = ' . '$many' . ';'.
    '$lower = ' . explode('..', '$lower..$upper')[0] . ';' .
    '$upper = ' . explode('..', '$lower..$upper')[1] . ';' .
    'return array_slice($list, $lower, $upper - $lower);'
);
Copier après la connexion

Principe de travail:

Yay casse la chaîne de code en balises via un analyseur, construit une arborescence de syntaxe abstraite (AST) et remplace la macro par du code PHP réel et génère finalement un code PHP exécutable. En raison des limites de la portée des variables PHP, la macro utilise la fonction

, qui est légèrement inélégante, mais implémente efficacement les fonctions attendues. eval()

Avec Yay, nous pouvons ajouter du sucre de syntaxe personnalisé à PHP, améliorant la lisibilité et l'efficacité de notre code. Si vous avez plus d'idées ou de suggestions sur la bibliothèque Yay, veuillez laisser un message à discuter.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal