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.03.18
3009
PHP

【PHP】空もしくは任意の値で埋めた配列を生成する方法

2023.03.12
1122
PHP

【PHP】Notice : Undefined variable: 変数名 inエラーの原因・対処方法

2023.09.26
729
PHP

【PHP】先頭・末尾の余計な半角スペース等を削除する方法

2023.03.01
508