PHP.mk документација

$GLOBALS

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

reserved.variables.globals.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека reserved.variables.globals.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
$GLOBALS

Референца за `reserved.variables.globals.php` со подобрена типографија и навигација.

reserved.variables.globals.php

$GLOBALS

(PHP 4, PHP 5, PHP 7, PHP 8)

$GLOBALSГи упатува сите променливи достапни во глобалната област

= NULL

Асоцијативен array содржи референци до сите променливи кои се моментално дефинирани во глобалната област на скриптата. Имињата на променливите се клучеви на низата.

Примери

Пример #1 $GLOBALS example

<?php

function test()
{
$foo = "local variable";

echo
'$foo in global scope: ' . $GLOBALS["foo"] . "\n";
echo
'$foo in current scope: ' . $foo . "\n";
}

$foo = "Example content";
test();

?>

Горниот пример ќе прикаже нешто слично на:

$foo in global scope: Example content
$foo in current scope: local variable
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Од PHP 8.1.0, пристапот за запишување до целата $GLOBALS низа веќе не е поддржан:

Пример #2 запишување на целата $GLOBALS ќе резултира со грешка.

<?php

// Generates compile-time error:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset(
$GLOBALS);
array_pop($GLOBALS);
// ...and any other write/read-write operation on $GLOBALS

?>

Белешки

Забелешка:

Ова е 'суперглобална', или автоматска глобална, променлива. Ова едноставно значи дека е достапна во сите опсези низ скрипт. Нема потреба да се global $variable; за пристап до неа во функции или методи.

Забелешка: Достапност на променливите

За разлика од сите други superglobals, $GLOBALS е суштински секогаш достапна во PHP.

Забелешка:

Од PHP 8.1.0, $GLOBALS е копија само за читање на глобалната табела со симболи. Тоа е, глобалните променливи не можат да се менуваат преку нејзината копија. Претходно, $GLOBALS низата е исклучена од вообичаеното однесување по вредност на PHP низите и глобалните променливи можат да се менуваат преку нејзината копија.

<?php

// Before PHP 8.1.0
$a = 1;

$globals = $GLOBALS; // Ostensibly by-value copy
$globals['a'] = 2;
var_dump($a); // int(2)

// As of PHP 8.1.0
// this no longer modifies $a. The previous behavior violated by-value semantics.
$globals = $GLOBALS;
$globals['a'] = 1;

// To restore the previous behavior, iterate its copy and assign each property back to $GLOBALS.
foreach ($globals as $key => $value) {
$GLOBALS[$key] = $value;
}

?>

Белешки од корисници 4 белешки

inafeeur на gmail точка com
3 години пред
We can be more clear with the extension of the given example.

Before PHP Version 8.1

<?php
  $a = 1;
  $globals = $GLOBALS;
  $globals['a'] = 2;
  echo $a; // 2
  echo $globals['a']; // 2
  echo $GLOBALS['a'];  // 2
?>

After PHP Version 8.1

<?php
  $a = 1;
  $globals = $GLOBALS;
  $globals['a'] = 2;
  echo $a; // 1
  echo $globals['a']; // 2
  echo $GLOBALS['a'];  // 1
?>
mstraczkowski на gmail точка com
12 години пред
Watch out when you are trying to set $GLOBALS to the local variable.

Even without reference operator "&" your variable seems to be referenced to the $GLOBALS

You can test this behaviour using below code

<?php
/**
 * Result:
 * POST: B, Variable: C
 * GLOBALS: C, Variable: C
 */
 
// Testing $_POST
$_POST['A'] = 'B';
 
$nonReferencedPostVar = $_POST;
$nonReferencedPostVar['A'] = 'C';
 
echo 'POST: '.$_POST['A'].', Variable: '.$nonReferencedPostVar['A']."\n\n";
 
// Testing Globals
$GLOBALS['A'] = 'B';
 
$nonReferencedGlobalsVar = $GLOBALS;
$nonReferencedGlobalsVar['A'] = 'C';
 
echo 'GLOBALS: '.$GLOBALS['A'].', Variable: '.$nonReferencedGlobalsVar['A']."\n\n";
vittorio.zamparella на famous googlemail
пред 9 години
I finally found information about superglobals not being found in $GLOBALS:

https://bugs.php.net/bug.php?id=65223&edit=2
-------------------------------------
 [2013-07-09 12:00 UTC] johannes @php.net
[...]super-globals (aka. auto globals) are not added to symbol tables by default for performance reasons unless the parser sees need. i.e. 

<?php
$_SERVER;
print_r($GLOBALS);
?>

will list it. You can also control this using auto_gloals_jit in php.ini: http://www.php.net/manual/en/ini.core.php#ini.auto-globals-jit
-------------------------------------

http://www.php.net/manual/en/language.variables.variable.php
-------------------------------------
Warning
Please note that variable variables cannot be used with PHP's Superglobal arrays within functions or class methods. The variable $this is also a special variable that cannot be referenced dynamically.
-------------------------------------
therandshow на gmail точка com
пред 14 години
As of PHP 5.4 $GLOBALS is now initialized just-in-time. This means there now is an advantage to not use the $GLOBALS variable as you can avoid the overhead of initializing it. How much of an advantage that is I'm not sure, but I've never liked $GLOBALS much anyways.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.