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

PHPについて質問です。

スクリプトを書くとき、globalではなく、staticを使った方がよいそうですが、
staticというのいまひとつ理解しきれません。
globalを使ったごく簡単なスクリプトをを作成して、
それと同じ動きをするスクリプトをstaticを使って書き直す
という例を用いてstaticについて解説してください。

●質問者: taroemon
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:PHP ひとつ スクリプト 作成
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● krese
●60ポイント ベストアンサー
$i = 0;
echo counter();
echo counter();
echo counter();
echo $i;

function counter() {
global $i;
return ++$i;
}
$i = 0;
echo counter();
echo counter();
echo counter();
echo $i;

function counter() {
static $i;
return ++$i;
}

上の例がglobal、下の例がstaticです。

globalの場合、グローバル変数$iが関数によって変更されているのがわかると思います。

こういったケースは変数の汚染と呼ばれます。


膨大なプログラムになると、他の部分でどういった名前の変数が使われているか把握しきれないため、

(特に汎用的な名前の)グローバル変数を使うのは避け、

staticで補える部分はstaticにするべきだという考えが支持されています。

◎質問者からの返答

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


僕がどこかで見た「globalではなく、staticを使った方がよい」というのは

処理速度の問題だったと思うのですが、セキュリティにも関係があるのですね。

staticについてより理解が深まったような気がしました。


ところで「globalではなく、staticを使った方がよい」というのを文面通りとらえると、

globalで書いたスクリプトはstaticで書き直せる、

たとえば、上記のスクリプトを同じ結果で出るように

staticで書き表せることができるのでしょうか?

それをどうやってやるかというの質問の趣旨です。


・・・とここまで書いてひょっとしたら私の解釈違いだったのかなと思えてきました。

念のため、さらに回答をお待ちします。

関連質問


●質問をもっと探す●



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