�����ķ�Χ��������������ı�����Ҳ����������Ч��Χ�����ֵ� PHP ����ֻ��һ�������ķ�Χ����������ķ�Χ���ͬ�������� include �� require ������ļ������磺
<?php
$a = 1;
include 'b.inc';
?>
������� $a �����ڰ����ļ� b.inc ����Ч�����ǣ����û��Զ��庯���У�һ���ֲ�������Χ�������롣�κ����ں����ڲ��ı�����ȱʡ������������ھֲ�������Χ�ڡ����磺
<?php
$a = 1; /* global scope */
function Test()
{
echo $a; /* reference to local scope variable */
}
Test();
?>
����ű��������κ��������Ϊ echo ���������һ���ֲ��汾�ı��� $a�������������Χ�ڣ�����û�б���ֵ�������ע� PHP ��ȫ�ֱ����� C ������һ��㲻ͬ���� C �����У�ȫ�ֱ����ں������Զ���Ч�����DZ��ֲ��������ǡ����������һЩ���⣬��Щ�˿��ܲ�С�ľı���һ��ȫ�ֱ�����PHP ��ȫ�ֱ����ں�����ʹ��ʱ��������Ϊ global��
���ȣ�һ��ʹ�� global �����ӣ�
Example #1 ʹ�� global
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b;
$b = $a + $b;
}
Sum();
echo $b;
?>
���Ͻű����������"3"���ں�����������ȫ�ֱ��� $a �� $b ֮����һ�������������ö���ָ����ȫ�ְ汾������һ�������ܹ�������ȫ�ֱ�������������PHP û�����ơ�
��ȫ�ַ�Χ�ڷ��ʱ����ĵڶ����취����������� PHP �Զ��� $GLOBALS ���顣ǰ������ӿ���д�ɣ�
Example #2 ʹ�� $GLOBALS ��� global
<?php
$a = 1;
$b = 2;
function Sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>
$GLOBALS ��һ���������飬ÿһ������Ϊһ��Ԫ�أ�������Ӧ��������ֵ��Ӧ���������ݡ�$GLOBALS ֮������ȫ�ַ�Χ�ڴ��ڣ�����Ϊ $GLOBALS ��һ����ȫ�ֱ��������·�����ʾ�˳�ȫ�ֱ������ô���
Example #3 ��ʾ��ȫ�ֱ����������������
<?php
function test_global()
{
// �������Ԥ����������� "super"��������Ҫ�� 'global' �ؼ�����ʹ�����ں����ı�����������Ч��
global $HTTP_POST_VARS;
echo $HTTP_POST_VARS['name'];
// Superglobals ���κη�Χ�ڶ���Ч�����Dz�����Ҫ 'global' ������Superglobals ���� PHP 4.1.0 ����ġ�
echo $_POST['name'];
}
?>
������Χ����һ����Ҫ��������̬������static variable������̬�������ھֲ��������д��ڣ���������ִ���뿪��������ʱ����ֵ������ʧ��������������ӣ�
Example #4 ��ʾ��Ҫ��̬����������
<?php
function Test()
{
$a = 0;
echo $a;
$a++;
}
?>
������ûʲô�ô�����Ϊÿ�ε���ʱ���Ὣ $a ��ֵ��Ϊ 0 ����� 0����������һ�� $a++ û�����ã���Ϊһ���˳������������ $a �Ͳ������ˡ�Ҫдһ�����ᶪʧ���μ���ֵ�ļ���������Ҫ������ $a ����Ϊ��̬�ģ�
Example #5 ʹ�þ�̬����������
<?php
function test()
{
static $a = 0;
echo $a;
$a++;
}
?>
���ڣ����� $a ���ڵ�һ�ε��� test() ����ʱ����ʼ����֮��ÿ�ε��� test() ����������� $a ��ֵ����һ��
��̬����Ҳ�ṩ��һ�ִ���ݹ麯���ķ������ݹ麯����һ�ֵ����Լ��ĺ�����д�ݹ麯��ʱҪС�ģ���Ϊ���ܻ�����ݹ���ȥ������ȷ���г�ֵķ�������ֹ�ݹ顣��������ĺ����ݹ������ 10��ʹ�þ�̬���� $count ���жϺ�ʱֹͣ��
Example #6 ��̬������ݹ麯��
<?php
function test()
{
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
test();
}
$count--;
}
?>
Note:
��̬�������������������������������������ñ��ʽ�Ľ�����丳ֵ�ᵼ�½�������
Example #7 ������̬����
<?php
function foo(){
static $int = 0; // correct
static $int = 1+2; // wrong (as it is an expression)
static $int = sqrt(121); // wrong (as it is an expression too)
$int++;
echo $int;
}
?>
��̬�������ڱ���ʱ�����ġ�
Note:
�ں���֮��ʹ�� global �ؼ��ֲ��������������һ������֮�ڰ����ļ�ʱ��
�� Zend ���� 1 ������������ PHP4�����ڱ����� static �� global �������������ķ�ʽʵ�ֵġ����磬��һ���������ڲ��� global ��䵼���һ��������ȫ�ֱ���ʵ�����ǽ�����һ����ȫ�ֱ��������á����п��ܵ���Ԥ��֮�����Ϊ����������������ʾ�ģ�
<?php
function test_global_ref() {
global $obj;
$obj = &new stdclass;
}
function test_global_noref() {
global $obj;
$obj = new stdclass;
}
test_global_ref();
var_dump($obj);
test_global_noref();
var_dump($obj);
?>
�������̻������
���Ƶ���ΪҲ������ static ��䡣���ò����Ǿ�̬�ش洢�ģ�
<?php
function &get_instance_ref() {
static $obj;
echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// ��һ�����ø�ֵ����̬����
$obj = &new stdclass;
}
$obj->property++;
return $obj;
}
function &get_instance_noref() {
static $obj;
echo 'Static object: ';
var_dump($obj);
if (!isset($obj)) {
// ��һ������ֵ����̬����
$obj = new stdclass;
}
$obj->property++;
return $obj;
}
$obj1 = get_instance_ref();
$still_obj1 = get_instance_ref();
echo "\n";
$obj2 = get_instance_noref();
$still_obj2 = get_instance_noref();
?>
�������̻������
������ʾ�˵���һ�����ø�ֵ��һ����̬����ʱ���ڶ��ε��� &get_instance_ref() ����ʱ��ֵ��û�б���ס��