Written by Kasumi

【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 名前空間名;

上記を重複する関数宣言の前に記述します。

名前空間で定義した関数を呼び出すには以下のように記述します。

名前空間名/関数名();

以上で重複関数による衝突エラーを改善できます。

まとめ

名前空間を使って、同じ関数名を使ってしまい衝突エラーになる事を防ぐ方法について紹介しました。

以上で解説を終わります。

目次

関連記事

PHP

【PHP】インターフェイス(interface)を定義する方法

2023.04.08
1403
PHP プログラミング

Use of undefined constant campaign – assumed ‘文字列'(this will throw an Error in a future version of PHP) inエラーがでる場合の対処方法

2022.01.29
2369
PHP

【PHP】文字列内で指定した文字列を検索。最初に現れる位置を取得する方法

2023.03.03
622
PHP

session_start(): Cannot start session when headers already sent in PHPエラーの原因・対処方法

2022.10.11
3194