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

メリット
- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる


Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!



初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
全プログラマー必見!
変数名/関数名にもう悩まない!
変数名/関数名にもう悩まない!
リーダブルコード


メリット
- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる
著:Dustin Boswell, 著:Trevor Foucher, 解説:須藤 功平, 翻訳:角 征典
¥2,640 (2023/07/23 02:48時点 | Amazon調べ)


目次
function_exists関数の使い方
関数名が既に使用されていないかを確認するには、function_exists関数を使います。
function_exists関数の使い方は以下のとおりです。
if(function_exists('①引数')) {
// ② true
} else{
// ③ false
}
function_exists関数の使い方
- 引数:既に使用されているか調べたい関数名を文字列で設定
- true:関数名が既に使用されている時に実行させる処理を記述
- false:関数名が使用されていない時に実行させる処理を記述
関数名が使用されていない時にだけ処理を実行させたい時はよくあります。このような場合、通常通りの使い方ではelse内に書く必要がありコードが長くなってしまいます。
このような場合は、function_exists関数の前に「!(ビックリマーク)」を付けてtrueとfalseの結果を入れ替えてしまいましょう。
<?php
if(!function_exists('fn1')) {
print_r('まだ関数名は使われてないよ!');
}
?>
あわせて読みたい




PHPで変数の前にビックリマーク(!)の意味と使い方
チーム開発や他人のコードを拝見した時などに条件分岐などで変数の前にビックリマーク(!)が付いていることを1度は見たことがあります。 プログラミング初学者の方は、最…
サンプルコード
それでは最後に、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はまだ使われていません」と表示がされていることが確認できます。