【PHP】同じ関数名を使ってしまい衝突エラーになるのを防ぐ方法【名前空間を使おう】

PHP開発のプロジェクトにおいて同じ関数名を使ってしまい、衝突エラーになることを防ぎたい。
本記事ではこのような悩みを解決します。
同じ関数名を使ってしまった場合のエラー例
post.phpの内容
<?php
function Message(){
return 'Hello world';
}
?>
index.phpの内容
<?php
//phpファイルを読み込む
require_once 'post.php';
function Message(){
return 'thanks you';
}
//関数の呼出し
echo Message();
?>
同じ関数名を使ってしまった場合にでるエラーのコード例です。
post.phpをindex.phpにrequire関数で読み込みしてます。
どちらのファイルにもMessage関数が定義されており、index.phpでMessage関数を呼び出すとエラーになってしまいます。
上記のようなエラーを次章で改善します。
名前空間(namespace)を使って重複してる関数名の衝突を防ぐ
post.phpの内容
<?php
//名前空間を定義
namespace message01;
function Message(){
return 'Hello world';
}
?>
index.phpの内容
<?php
//phpファイルを読み込む
require_once 'post.php';
function Message(){
return 'thanks you';
}
//post.phpで定義されてるMessage関数の呼出し
echo message01\Message();
//Hello world
//index.phpで定義されてるMessage関数の呼出し
echo Message();
//thanks you
?>
重複する関数名の衝突を防ぐコード例です。
名前空間を重複する関数名の前に定義します。
名前空間の使い方は以下の通りです。
namespace 名前空間名;
上記を重複する関数宣言の前に記述します。
名前空間で定義した関数を呼び出すには以下のように記述します。
名前空間名/関数名();
以上で重複関数による衝突エラーを改善できます。
まとめ
名前空間を使って、同じ関数名を使ってしまい衝突エラーになる事を防ぐ方法について紹介しました。
以上で解説を終わります。
目次