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】複数行の長い文字列に変数を組み込んでまとめて出力する方法

2023.02.04
1004
PHP

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

2023.04.08
897
PHP

【PHP】Undefined array keyエラーの原因・改善方法

2022.06.21
16376
PHP

【PHP】配列から指定した数だけランダムに要素を取り出す方法

更新日:2023.03.12
773