Webmaster Forum
Go Back   Webmaster Forums UK SEO SEM Webmaster Community Forum - UKWW > Web Design and Website Development > Programming > PHP Forum
Register FAQ Members List Downloads Calendar Today's Posts Webmaster Resources Webmaster Blogs

UK Web Hosting
UK Web Hosting
Website Hosting
Website Hosting
UK One Way
UK One Way
Get Top 10 Exposure
 
Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 04-15-2008, 07:35 PM
dman_2007
Guest
 
Posts: n/a
iTrader: / %
Default Tip : static and global variables in php

Quick tip to let you know that assigning reference to a static variable or a global variable is not a good idea. The reason is because both static variables and access to global scope variables in local function by declaring them global is implemented using references. So, when you assign a reference to a variable declared global, it will just make it point to a new memory location instead of the original global variable. For example,

Code:
<?php
  function test_global()
  {
    global $test_var;
    
    $another_test_var = 12;

    echo 'function test_global : $test_var before reference assignment & value change ', $test_var, '<br />'; 
    $test_var = &$another_test_var;
    $test_var = 20; 
    echo 'function test_global : $test_var after reference assignment & value change ', $test_var, '<br />'; 
  }
  
  $test_var = 1;
  
  echo '$test_var before calling test_global function ', $test_var, '<br />'; 
  test_global();
  echo '$test_var after calling test_global function ', $test_var, '<br />'; 
?>
code given above produces the following output :

Quote:
$test_var before calling test_global function 1
function test_global : $test_var before reference assignment & value change 1
function test_global : $test_var after reference assignment & value change 20
$test_var after calling test_global function 1
as you can see, $test_var does not points to global $test_var variable after reference assignment.

Similarly, when a static variable is assigned a reference to another variable, the value is not retained across the function call as it normally should. For example,

Code:
<?php
  function test_static()
  {
    static $funct_call_cnt = 1;
    
    echo 'Function call count : ', $funct_call_cnt++, '<br />'; 
    
    static $test_var;    
    $another_test_var = 12;
    
    if(isset($test_var))
    {
      echo '$test_var is set to ', $test_var, '<br />';
    }
    else
    {
      echo '$test_var is not set', '<br />';;
      $test_var = &$another_test_var;
      echo '$test_var is now set to ', $test_var, '<br />';
    }
     
  }
  
  test_static();
  echo '<br />';
  test_static();
?>
the code given above produces the following output :

Quote:
Function call count : 1
$test_var is not set
$test_var is now set to 12

Function call count : 2
$test_var is not set
$test_var is now set to 12
Digg this Post!Add Post to del.icio.usStumble this Post!Wong this Post!
Reply With Quote
Reply

Bookmarks

Webmaster Resources
UK Web Hosting
UK WW SEO Tools
Free site submission
Web Directory
 
Advertisement
firewall script
 
Site Of the Month
BizzFace
Nominate site of the month
 
Tag Cloud
3.7 adsense ads space bollywood downloads bollywood latest buy banners changing host changing server channel solutions cheap off page packages cheap seo packages cheap seo services closing coupon code boss cart jv directory announcement domain name extension domain names e brochures ecommerce flash website promotion flash websites forum free directory free directory software google hostquack host quack inline price changes introduction ipn paypal payment boss job site joomla job junglejar junglejar.com lbs. link bid script link bid script hungarian link exchange linux host moving server off page seo packages picture of the day referral sell baners seo seo packages shared hosting submit url switching host templates thumbnail tld today in history traffic transfering host uk shipping postcodes upgrade vbulletin web design webinare webmaster tools wordpress

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump



All times are GMT. The time now is 03:49 PM.

UK Webmaster World Forums - Internet marketing, web development, domain names, SEO contest and discussuons.
Subscribe to our feeds   Subscribe to our feeds

Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149