PHP

PHPで関数名が重複していないか確認する方法(function_exists)

本記事では、関数名が重複していないか事前に確認する方法とそれを実装するために必要なfunction_exists関数の使い方について解説しています。

PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!

本書情報
著者谷藤 賢一
発売日2017/3/6
ページ数331ページ
Kindle版
レビュー
(Amazon)
(168件)

参考書が苦手な人はUdemyの動画がおすすめ
ちゃんと学ぶ、PHP+MySQL(MariaDB)入門講座

動画情報
作成者たにぐち まこと
学習時間11時間
受講者数24,526人
レビュー (4,518件)
動画の詳細はこちら

function_exists関数の使い方

関数名が既に使用されていないかを確認するには、function_exists関数を使います。

function_exists関数の使い方は以下のとおりです。

if(function_exists('①引数')) {
    // ② true
} else{
    // ③ false
}
function_exists関数の使い方
  1. 引数:既に使用されているか調べたい関数名を文字列で設定
  2. true:関数名が既に使用されている時に実行させる処理を記述
  3. false:関数名が使用されていない時に実行させる処理を記述

関数名が使用されていない時にだけ処理を実行させたい時はよくあります。このような場合、通常通りの使い方ではelse内に書く必要がありコードが長くなってしまいます。

このような場合は、function_exists関数の前に「!(ビックリマーク)」を付けてtrueとfalseの結果を入れ替えてしまいましょう。

<?php 
if(!function_exists('fn1')) {
    print_r('まだ関数名は使われてないよ!');
}
?>
PHPで変数の前にビックリマーク(!)の意味と使い方本記事では、PHPで変数の前に使用されるビックリマーク(!)の意味と使い方について解説しています。...

サンプルコード

それでは最後に、function_exists関数内で重複していないかを確認することが出来るサンプルコードを紹介します。

<?php 
function fn1(){
    print_r('TEST');
}

function fn_check($str){
    if(function_exists($str)) {
        print_r("関数名:${str}は既に使われています<br>");
    } else{
        print_r("関数名:${str}はまだ使われていません<br>");
    }
}

fn_check('fn1'); // -> 関数名:fn1は既に使われています
fn_check('fn2'); // -> 関数名:fn2はまだ使われていません
?>

1回目のfn_check関数ではfunction_exists関数の引数に渡す値が「fn1」です。これは既に定義されている関数名のため「fn1は既に使われています」と表示がされていることが確認できます。

2回目のfn_check関数ではfunction_exists関数の引数に渡す値が「fn2」です。これはまだ定義されていない関数名のため「関数名:fn2はまだ使われていません」と表示がされていることが確認できます。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村