人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【PHP】【名前衝突回避】
index.phpから,自作のミニ掲示板やアクセスカウンターなどを呼び出す構成でサイトを構成しようとしていますが,
同じ名前の関数があって,エラーになってしまいます.

関数の名前を変更する以外に,普通はどういった方法で名前の衝突を回避しているのでしょうか?
PHP5.3には名前空間が実装されたみたいですけど,使っているサーバーはしばらく5.2のままのようです.

【現在の状態】
■index.phpの一部
include ('./minibbs/minibbs.php');
include ('./counter/counter.php');

■minibbs.phpの一部
function getData(){
//掲示板のデータを取得する処理
}

■counter.phpの一部
function getData(){
//アクセスカウンターの値を取得する処理
}

●質問者: Uプ
●カテゴリ:ウェブ制作
✍キーワード:INDEX MINIBBS PHP アクセスカウンター エラー
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● kuina_onRails
●23ポイント

接頭字をつけるのが一般的でしょうか。

bbs_getData()やcnt_getDataなどとしてみてはいかがでしょうか。

◎質問者からの返答

回答ありがとうございます.

しかし,関数の名前を変える以外の方法について知りたかったです.

クラスを使う,定義した関数を無かったことにする等...

とりあえず,現在は接尾辞をつけて動かしてます.


2 ● hijk05
●23ポイント

クラスのメンバー関数にするのが普通です。

◎質問者からの返答

回答ありがとうございます.

簡単なサンプルソースがあった方がうれしかったです.


3 ● pahoo
●22ポイント

ご質問のようなケースでは、関数名を変えるしか手段はないでしょう。


includeの代わりに、file_get_contentsでいったん変数に読み込んで、置換関数で関数名を置き換え、evalを実行すれば、ソースを変えずに関数名を変えることはできますが、安全性の保証はしません。

◎質問者からの返答

回答ありがとうございます.

そのような方法があるのですね.

しかし,今私が求めている事は,少ない変更で済ます事ではなく

美しいソースのあるべき姿です.

言葉足らずですみません.


4 ● pahoo
●22ポイント ベストアンサー

しかし,今私が求めている事は,少ない変更で済ます事ではなく美しいソースのあるべき姿です.

了解です。

それでしたら、クラスにメンバ関数としてカプセル化するのが定石です。private / public の使い分けを行うことで、衝突することはほとんどなくなるはずです。

◎質問者からの返答

ありがとうございます.

今,クラス化して書き直してます.

美しいソースは一日にしてならずですね

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ