PHP のキーワード引数的なもの

さて、サーバーエンジニアたらん者、LAMP (是れ Linux, Apache, MySQL, PHP が略なり) に通ぜずば、即ち須らく似非者の誹りを免れざるべし。

ということで、PHP についても少し書くことにしました。最新版のコンパイルについては、yum だの aptitude だのでインストールした PHP で phpinfo を表示し、得られたコンパイルオプションをコピー&ペーストして configure && make すればいいでしょう。ここでは PHP のプログラミングに触れます。

サーバー管理者にお馴染みの Python にはキーワード引数という便利な機能があります (下の例は Python 2.x です):

#!/usr/bin/python
# coding: utf-8

def my_func (mandatory_arg, optional_arg=''):
    return unicode (mandatory_arg) + unicode (optional_arg)

if __name__ == '__main__':
    print my_func (optional_arg=u'世界!', mandatory_arg=u'こんにちは、')

my_func の呼び出しに注目して下さい。引数の名前を指定することで、順番を無視することができます。
PHP では、どうすればこれが実現できるでしょう。ポイントは extract です:

<?php

function my_func (array $args)
{
    extract ($args);

    if (! isset ($mandatory_arg)) {
        throw new Exception ('$mandatory_arg is mandatory.');
    }

    isset ($optional_arg) || $optional_arg = '';

    return (string) $mandatory_arg . (string) $optional_arg;
}

$args = array ("optional_arg" => "世界!", "mandatory_arg" => "こんにちは、");
echo my_func ($args), "\n";

Python 版に比べると、ごちゃごちゃしているものの、連想配列と extract を使うことでほぼ同じことが実現できました。

ただ、引数についてしっかりドキュメントを書かないと、訳分からなくなるでしょう。Python は一目で分かるので、その点便利です。

(コウヅ)

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中