[PHP]クラスメソッドをキャメルケース、スネークケースのどちらでも呼び出せるようにする

Share on Facebook
Bookmark this on Delicious
LINEで送る
Pocket

PHP のクラスメソッドは基本的にキャメルケース(camelCase)で命名されることが多いのですが、プロジェクトによっては単語をアンダーバーで区切るスネークケース(snake_case)が使われることもあります。
どちらにするかは自由ですが、プロジェクト全体で統一するのが望ましいとされています。

自分で作ったクラスをほかのプロジェクトでも再利用する場合、必要に応じて命名記法を書き換える事がありますが、マジックメソッドの __call(), __callStatic() を利用すると存在しない存在しない名前のメソッドが呼び出されようとしたときの処理を定義できるため、キャメルケース、スネークケースのどちらで呼び出されても同じメソッドが実行される仕組みを作ることができます。

<?php
class Example
{
    public function __call($name, $args) {
        $name = str_replace('_', '', ucwords($name, '_'));
	    $name[0] = strtolower($name[0]);
        return call_user_func_array([$this, $name], $args);
    }

    public static function __callStatic($name, $args) {
        $name = str_replace('_', '', ucwords($name, '_'));
	    $name[0] = strtolower($name[0]);
        return call_user_func_array([self::class, $name], $args);
    }

    public function exampleMethod($str) {
        return "hello, " . $str;
    }

    static public function staticMethod($str){
        return "hello, " . $str;
    }
}

メソッドの呼び出し

$example = new Example();

echo $example->exampleMethod("World");
echo $example->example_method("World");

echo Example::staticMethod("World");
echo Example::static_method("World");
実行結果: Hello, World


Similar Posts:




  • This entry was posted in PHP and tagged . Bookmark the permalink.

    コメントを残す

    メールアドレスが公開されることはありません。