ホームページ > バックエンド開発 > PHPチュートリアル > 楽しみと利益のためのPHPマクロ!

楽しみと利益のためのPHPマクロ!

William Shakespeare
リリース: 2025-02-15 09:31:11
オリジナル
432 人が閲覧しました

Yay Preprocessorライブラリを使用して、よりエレガントなコードを簡単に実装するために、Syntax SugarをPHPに追加してください!この記事では、Yayライブラリを使用してRuby-Like Array Slice Syntax SugarをPHPに追加する方法を示します。 $many[4..8]

コアポイント:

    Yayは、開発者がマクロを介してPHPに他の言語に構文糖を追加できるようにするプレプロセッサライブラリです。
  • yayはコード文字列をタグに分割し、抽象的な構文ツリー(AST)を構築し、マクロ要素を実際のPHPコードに置き換え、PHPコードを再組み立てします。
  • 可変スコープとパーサーにはいくつかの制限がありますが、Yayでは、よりクリーンでより効率的なPHPコードの作成を許可しています。
多くのPHP開発者は、他のプログラミング言語の背景から来ており、他の言語の簡潔な構文に使用されます。 Yay Libraryは、この問題を解決するために作成されました。たとえば、Rubyでは、

を使用して、配列の2番目、3番目、および4番目の要素を取得できますfew = many[1..3]。また、PHPでは、同じ機能を達成するためにmanyを使用する必要があります。明らかに、Rubyの構文はより簡潔でエレガントです。 $few = array_slice($many, 1, 3);

PHP Macros for Fun and Profit!

マクロを使用してください:

まず、Yay Libraryをインストールする必要があります: 次に、次のコードを使用して
$ composer require yay/yay:dev-master
ログイン後にコピー
というファイルを作成します。

array_slice.yphp次に、Yayコンパイラを使用して

ファイルを標準のPHPコードに変換します。
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];
ログイン後にコピー

生成された.yphpファイルには、次のものが含まれます(yayバージョンによってはわずかに異なる場合があります):

$ vendor/bin/yay array_slice.yphp >> array_slice.php
ログイン後にコピー

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);'
);
ログイン後にコピー

yayは、コード文字列をパーサーを介してタグに分割し、抽象的な構文ツリー(AST)を構築し、マクロを実際のPHPコードに置き換え、最終的に実行可能なPHPコードを生成します。 PHP変数の範囲が制限されているため、マクロは関数を使用します。これはわずかに無力ですが、予想される関数を効果的に実装します。

yayを使用すると、カスタム構文シュガーをPHPに追加して、コードの読みやすさと効率を向上させることができます。 Yay Libraryについてもっとアイデアや提案がある場合は、メッセージを残して議論してください。

以上が楽しみと利益のためのPHPマクロ!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート