php:スコープ

global

<?php

$a=1;

function test()
{
  $a = $a + 1;
}
function test3()
{
  global $a;
  $a = $a + 1;
}

function main()
{
  for($i=0; $i < 10 ; $i++){
    test();
  }
  echo'$a=', $a,"\n";
}
function main2()
{
  global $a;
  for($i=0; $i < 10 ; $i++){
    test();
  }
  echo'$a=', $a,"\n";
}
function main3()
{
  global $a;
  for($i=0; $i < 10 ; $i++){
    test3();
  }
  echo'$a=', $a,"\n";
}


main();
main2();
main3();

?>
image 
$GLOBALS
<?php
$a=1;

function test()
{
  $GLOBALS['a'] = $GLOBALS['a'] + 1;
}

function main()
{
  for( $i=0; $i<10 ; $i++){
    test();
  }
  echo $GLOBALS['a'],"\n";
}

main();
?>

 

image

static

<?php

function test($print)
{
  static $a=1;
  if( $print )
    echo "a=$a\n";
  else
    $a = $a + 1;
}

function main()
{
  for($i=0; $i < 10 ; $i++){
    test(false);
  }
  test(true);
}
!
main();
?>

 

image

global reference

<?php
$obj=null;
class Hoge{
  public $name ='hoge';
}

function g_ref() {
    global $obj;
    $obj = &new Hoge;
}

function g() {
    global $obj;
    $obj = new Hoge;
}

g_ref();
var_dump($obj);
g();
var_dump($obj);
?>
image 
static reference:
cat: cat: No such file or directory
<?php
$obj=null;
class Hoge{
  public $name ='hoge';
}

function g_ref($print) {
    static $obj;
    if ($print )
      var_dump($obj); 
    else
      $obj = &new Hoge;
}

function g($print) {
    static $obj;
    if( $print )
      var_dump($obj);
    else
      $obj = new Hoge;
}

g_ref(false); 
g(false);
g_ref(true);
g(true);
?> 
image 

 

カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中