スコープ - みる会図書館


検索対象: PHP 1 : はじめてのPHPプログラミング
17件見つかりました。

1. PHP 1 : はじめてのPHPプログラミング

7-3 学習のポイント KEYWORD ・スコープ 7-3 変数のスコープ 変数のスコープ 関数内外でのスコープの違い ・変数の有効範囲は「スコープ」と呼ばれる ・関数の内部では外部の変数にアクセスできない ローカルスコープとグローバルスコープ うことを表しています。逆にスコープがあるからこそ変数はほかの領域から値 数のスコープはその変数がほかの領域からも参照することが可能であるかとい PHP の変数の有効範囲はスコプという領域を単位に管理されています。変 関数内外でのスコープの違い グローバルスコープ・・・プログラム内で有効なスコープ ローカルスコープ・・・関数の内部で有効なスコープ スコープ・・・変数名の有効範囲 KEYWORD 静的 (static) 変数 $G LOBALS 変数 ・ static 変数の値は同じ関数内で利用し続けることができる 持される ・関数内で static キーワードを用いて宣言された変数は関数の呼出し後も維 ・ $GLOBALS 変数はスーバーグローバルスコープの変数である クセスできる ・関数内部で $ GLOBALS 変数を利用するとグローバルスコープの変数にア 利用できる ・ glob 引キーワードを使うことで関数の内部でグローバルスコープの変数が ・関数の内部を「ローカルスコープ」、外部を「グローバルスコープ」と呼ぶ

2. PHP 1 : はじめてのPHPプログラミング

KEYWORD ・グローバルスコープ ・ローカルスコープ KEYWORD ・ global キーワード 7-3 変数のスコープ 関数の外側のスコープ function ・・・ ( ) { 関数のスコープ 関数の外側のスコープ 言した変数のスコープをグローバルスコープとして利用できるようにします。 キワトがあります。 global キーワードは関数内から宣言することができ、宣 数内からグローノヾルスコープの変数値を参照する方法のひとっとして、 global ただし、関数内の変数は絶対に関数内だけでしか使えないのでしようか ? 関 global キーワード 場合、すべてがグローバルスコープで管理されるのは混乱の元となります。 分ひとりでプログラムを開発する場合はまだしも、ほかの人と共同で開発する る必要がありますし、関数の呼び出し順序も気にしないといけなくなります。自 れているようなことがあれば、関数も含めて変数名が重複しないように気にす もしもこのローカルスコープがなく、すべてがグローバルスコープで管理さ て変更されないようにスコープで守られているということになります。 影響を与えないということになります。つまり、関数の外側の変数は関数によっ これは、 myFunc 関数が作成した変数は、 myFunc 関数の外側にある変数に echo $a; / / myFunc で設定した 100 にはならない $a = 10 の function myFunc ( ) { く ?php のため、関数内で作成した変数を関数の外側から参照することができません。 れますが、関数の場合はローカルスコープという領域で変数が管理されます。そ PHP の場合、ほとんどの変数はグローバルスコープという領域で値が管理さ ローカルスコープとグローバルスコープ

3. PHP 1 : はじめてのPHPプログラミング

この章のテーマ 本章では PHP の基本的な文法の解説の仕上げとして関数の利用方法について説 明します。関数は PHP の一連の処理に名前を付けたもので、簡単に呼び出して利 用することができます。すでに解説してきたなかでもいくつかの関数が利用され ており、 PHP の多くの機能が関数で書かれています。ここでは関数の基本知識と 利用するための方法を解説するほか、独自の関数を定義して利用する方法につい ても説明します。また、関数に関連して外部のファイルの読み込み、関数で使われ る変数の有効範囲 ( スコープ ) 、言語構造などについても解説します。本章をマス ターして PHP の基本を押さえてしまいましよう。 7-1 外部ファイルの読み込み include 文と require 文 7-2 関数 関数の基礎知識 関数の作成 可変引数と可変関数 7-3 変数のスコープ 関数内外でのスコープの違い 0 $GLOBALS 変数 7-4 日語構造について 言語構造とは何か list() について 0 include_once 文と require_once 文 echO と print の違い 静的 (static) 変数 ローカルスコープとグローバルスコープ 参照渡し 関数の呼び出し この章を学習すると以下の知識をマスターできます。 ・外部のプログラムファイルの読み込み方 ー連の処理をまとめて呼び出すことのできる関数の使い方 ・関数の作り方 ・参照渡し、可変引数、可変関数の利用法 ・スコープの役割とグローバル変数の利用 ・ PHP に備わる言語構造とその利用方法

4. PHP 1 : はじめてのPHPプログラミング

目 次 7 ー 2 7 ー 3 7 ー 4 関数 関数の基礎知識 関数の呼び出し・ 関数の作成 参照渡し 可変引数と可変関数 変数のスコープ 関数内外でのスコープの違い ローカルスコープとグローバルスコープ $GLOBALS 変数 静的 (static) 変数 言語構造について 言語構造とは何か ech0 と print の違い list() について 練習問題 第 8 章 PHP のいろいろな機能 8-1 8 ー 2 8-3 8-4 8 ー 5 8-6 文字列操作 マルチバイト文字と ASCII 日付操作 UN Ⅸタイムスタンプについて GMT とタイムゾーン 配列操作 PHP の配列操作・ ファイル操作 ファイル操作の基本とリソース テキストデータとバイナリデータ ディレクトリ操作・ 変数操作 変数に対する操作 HTML ファイルからの情報の取得 Web アプリケーションを作成する G を利用する POST を利用する 練習問題 練習問題解答および解答例 索引 190 192 196 200 204 207 ・ 207 ・ 209 212 212 214 214 215 216 218 219 221 221 231 231 232 236 236 244 ・ 244 ・ 245 251 258 258 264 264 264 267 270 ・ 271 282

5. PHP 1 : はじめてのPHPプログラミング

第 7 章関数 外部ファイルの読み込み 関数 変数のスコープ 言語構造について

6. PHP 1 : はじめてのPHPプログラミング

・ 2 7 0 第 7 章関数 global キーワードは以下のようにします。 function myFunc ( ) { global 変数 関数内から global として宣言した変数は、そのスコープがグローバルスコー プになるため、関数の外側で作成された変数を参照することができます。 く ?php 100 : function myFunc ( ) { global $a; echo p > 変数 a の値はし $a, ーですく / ゾ・ myFunc (); では、この global を使った場合の実行結果を見てみましよう。 図・一 20 グローバル変数の利用 中 : ho れし 0 ト p - WiL ow 就を吶 xp 0 艙「 h は p : / / 醂 2 軋 p ャ↓ナし新 変数 a の値は 100 てす ローカルイントラネットー保護モード : 有効 気 100 % ャ 関数の外側で作成された変数 a の値が参照できていることが確認できます。 また、 global で変数を宣言するとその変数はグローバルスコープになるため、関 数内で作成した変数に関数外からアクセスすることができます。

7. PHP 1 : はじめてのPHPプログラミング

・ 2 72 関数の中でも、連想配列と同じように、キーを使ってスーパーグローバル変数 第 7 章関数 用していた変数 a の値を上書きしてしまっています。 myFunc 関数を使うとそ のたびに変数 a の値は 2 になります。 このように global で変数を上書きしてしまうことで、プログラムの動作を変化 させてしまうことがありますので、 global で変数を利用する際には十分注意して ください。 $GLOBALS 変数 gl 。 bal キーワードを使って変数を用意すると関数の外部の変数が利用できる ようになりますが、同じことが $GLOBALS 変数を使うことでも可能です。 $ GLOBALS 変数はプログラムの実行時にあらかじめ用意されているスーパー グローバルスコープの変数のひとつです。 $ GLOBALS 変数はすべてのグローバルスコープの変数に連想配列の形式で アクセスができます。配列のキーには変数名を利用します。この $GLOBALS 変 数は関数の中からも利用可能です。例を見てみましよう。 KEYWORD ・ $GLOBALS 変数 ・ static キーワード KEYWORD <?php $a = 10 function myFunc ( ) { echo '<P > 変数 a の値は一 myFunc ( $GLOBALS い a 冂 ーですく / p $ GLOBALS にアクセスできます。 静的 (static) 変数 関数内で使った変数をふたたび呼び出した際にまた利用したいことがありま す。そのような場合に利用するのが static キーワー 処理が終了しても、変数の値は保持されます。 トです。これを使うと関数の

8. PHP 1 : はじめてのPHPプログラミング

27 7 ・ 7-3 変数のスコープ く ?php function myFunc ( ) { global $b; $b = 200 ー myFunc ( echo '< > 変数 b の値はし $b, ーですく / p > 関数からもグローバルスコープの変数が利用できる global キーワードは一見 便利なようにも見えますが、予期せぬ混乱を招くことがあるので、利用するには 十分注意が必要です。以下の例を見てください。 く ?php function myFunc ($value) { global $a; return $value * $a; 50; $b = myFunc ($a) ーですく / P>' ーですく / p > echo '<P > 変数 a の値は一 echo '<P > 変数 b の値は一 $b この例での動作は、以下のような出力結果になります。 図② -21 グローバル変数の上書き ト p : 08 式 . p 第 : ー三 p : ″ 0 st/ t ・ p ス Live Search , 驫を国′当朝 , 、ページを 変数 a の値は 2 てす 変数 b の値は 100 てす 。は一ヂ 気 100 % , ャ 鱆ローカルイントラネットー保嚢モード : 有効 関数内で不用意に gl 。 bal を宣言したりしてしまうと、ほかの領域で使ってい た値を上書きしてしまうことがあります。上記例では、 myFunc 関数の外側で利

9. PHP 1 : はじめてのPHPプログラミング

・ 208 第 7 章関数 を変更されずに安全に操作ができるといえます。 さきに、関数の引数の「参照渡し」を説明した際に、関数内から関数の外側の 変数を操作すること ( 変更すること ) ができなかったのを覚えているでしよう か ? おさらいとして以下の例の実行結果を予想してみてください。 <?php $a = 2 0 ー function ChO e ChO echo myFunc ( myFunc ( ) { '<P> ( 関数内 ) 変数 a の値は嵭 var export ( $a, true); / / myFunc の実行 ーですく / p ゾ echo '<P> ( 関数外 ) 変数 a の回 ーですく / ・ myFunc 関数から myFunc 関数の外側で宣言された変数 a の値を参照してい ます。 myFunc 関数から見て変数 a の値はどうなっているでしようか。実行結果 は次のようになります。 図② -19 関数内で外部の変数を参照する 0 。 h 。 / ハ 0 加 t - し P , 、 , 人 Live search ー OWS れ xpo 「ぎド纛嚇蟲基 ; る ttp;/ 。 c 豼 t ー谷ーァ物住ページ旧マ ( 関数外 ) 変数 a の値は 20 てす ( 関数内 ) 変数 a の値は NIJLL てす ローカルイントラネットー保護モード : 有効 気 100 今 6 マ 実行してみると、 myFunc 関数内では、変数 a は「宣言されていない値 (Undefined variable) 」としてワーニングメッセージが出力されてしまいます。 myFunc 関数 の直前に変数 a があるにもかかわらずこうしたワーニングが出力されるのは、 変数のスコープが正しく機能しているからといえます。 つまり、変数 a は myFunc 関数からはアクセスできない値、もしくは myFunc 関数のスコープ中には変数 a は宣言されていないとみなすことができます。

10. PHP 1 : はじめてのPHPプログラミング

索 引 285 ・ ・・ 74 , 179 へ行 ヘッダ・ ヘッダ情報 変数・ 変数の宣 ホ行 ボディ・・ マ行 前置・ マジック定数・ マップ・・ マルチタスク・・ マルチバイト文字 マルチメディア・ 丸め誤差・ 丸め処理 右結合 ム行 無限ループ・・ メ行 メソッド・ メディアタイプ・・ モ行 文字コード 文字符号コード・・ 文字列・・ 文字列演算子・・ 戻り値・ ユ行 ユーザー定義関数・ 優先順位・ ・ 43 ・・・ 222 ・ 42 ・ 37 ・・・ 116 ・ 35 ・・ 179 ・・・ 121 ・・ 121 ・ 33 ・・・ 222 ・・・ 141 ・・・ 130 ・・ 106 ・ 76 ・ 38 ・ 35 ・・・ 115 ・・ 196 ・・ 191 ・・ 105 78 , 86 ヨ行 要素・ 予約語 リ行 リクエスト・・ リクエスト行・ リクエストバラメータ リクエストメッセー リソース・・ ル行 ループカウンタ・・ ループ処理・ レ行 レスポンス・・ レスポンス行・・ レスポンスメッセー 連想配列・・ ロ行 ローカルアプリケーション・ ローカルスコープ・・ ロック・・ 論理演算子・ 論理値・ ワ行 割り込み・・ シ・ シ・ ・・・ 134 ・・・ 128 17 , 69 ・・・ 172 ・ 27 ・ 39 ・ 36 ・・・ 6 , 36 , 245 ・・・ 163 ・ 83 ・・・ 100 ・・・ 249 ・・・ 209 ・ 17 ・・・ 141 ・ 27 ・ 39 17 , 69