【VB.NETプログラマーから見たPHP】変数について

PHP

仕事でVB.NETを利用しているのですが、PHPの変数が少し解り難かったのでPHPの変数について、理解しておきたいポイントをまとめました。

基本動作

PHP の変数はドル記号の後に変数名が続く形式で表されます。 変数名は大文字小文字を区別します。

$this は特別な変数であり、代入することはできない。

変数に変数を代入する場合、値渡しとなるので元の値は変更されない。

例)$aに$bを代入し、その後、$aに値を設定する。

<?php
	$a="abc";
	$b=123;
	$a=$b;
	$a=456;
	echo $a."\n".$b;
?>

456
123

参照を渡す場合は、&を変数の前につける 例)「$a=&$b」

<?php
	$a="abc";
	$b=123;
	$a=&$b;
	$a=456;
	echo $a."\n".$b;
?>

456
456

名前のある変数は参照渡しが出来るが、名前が無い式は参照渡しが出来ない。

変数が初期化されていない場合、型のデフォルト値が設定される。

定義済み変数

定義済変数は変更出来ない。

スーパーグローバル — すべてのスコープで使用できる組み込みの変数

  • $GLOBALS — グローバルスコープで使用可能なすべての変数への参照
  • $_SERVER — サーバー情報および実行時の環境情報
  • $_GET — HTTP GET 変数
  • $_POST — HTTP POST 変数
  • $_FILES — HTTP ファイルアップロード変数
  • $_REQUEST — HTTP リクエスト変数
  • $_SESSION — セッション変数
  • $_ENV — 環境変数
  • $_COOKIE — HTTP クッキー
  • $php_errormsg — 直近のエラーメッセージ
  • $http_response_header — HTTP レスポンスヘッダ
  • $argc — スクリプトに渡された引数の数
  • $argv — スクリプトに渡された引数の配列

スコープ

グローバル変数を関数内で利用する場合は「global 」として宣言する必要がある。

globalのかわりに$GLOBALSを使用する事も出来ます。

可変変数

変数名を可変にする機能です、変数名を動的に作成する事ができるので、必要があれば利用する程度で通常のプログラムを作成する場合、可読性が減少するので積極的には使わない方が良いと思います。

<?php
class foo {
    var $bar = 'I am bar.';
    var $arr = array('I am A.', 'I am B.', 'I am C.');
    var $r   = 'I am r.';
}

$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "\n";
echo $foo->{$baz[1]} . "\n";

$start = 'b';
$end   = 'ar';
echo $foo->{$start . $end} . "\n";

$arr = 'arr';
echo $foo->{$arr[1]} . "\n";

?>

I am bar.
I am bar.
I am bar.
I am r.

1行目の表示は「fooクラスの$bar」を表示しています。

2行目の表示は$bazの2番目[bar]を取得して「fooクラスの$bar」を表示しています。

3行目の表示は$startの[b]と$endの[ar]を結合し[bar]の文字を作成し、「fooクラスの$bar」を表示しています。

4行目の表示は$arrの2文字目[r]を取得し、「fooクラスの$r」を表示しています。

まとめ

  1. 変数への代入は値渡しである。
  2. 変数への参照渡しは変数の前に&を付ける。
  3. 同一の変数でもスコープが変われば別の変数となる。
  4. 可変変数は利点があるが、プログラムの可読性が低下するので利用する時は考慮が必要。

コメント

タイトルとURLをコピーしました