[JAVA] J'ai recherché des variables PHP

Prémisse (ce que vous apprenez)

――J'ai appris Java pendant quelques mois

Ce que j'ai regardé

Le contenu suivant est extrait du ** PHP Manual **.

<?php
$a = 1;
include'b.inc '; / * $ a peut également être utilisé pour les fichiers lus par include ou require. * /
?>

La variable $ a est également disponible dans le script b.inc inclus

--Il existe une gamme de domaines tels que mondial et local

<?php
$ a = 1; / * Portée globale * /

function test()
{ 
echo $ a; / * Référence à la variable de portée locale * /
} 

test();
?>

Rien ne s'affiche lorsque test () est exécuté avec ↑. (Parce qu'il a une portée différente.)


-Si vous utilisez une variable de portée globale dans une méthode, utilisez le mot-clé global

<?php
$a = 1;
$b = 2;

function Sum() 
{
   global $a, $b;
   $b = $a + $b;
} 

Sum();
echo $b;  /*$b=3*/
?>

↑ Ma compréhension: un slogan pour utiliser la portée globale définie?

・ $ GLOBALS peut être utilisé à la place du mot-clé global

<?php
$a = 1;
$b = 2;

function Sum() 
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
} 

Sum();
echo $b;
?>

Il semble que «$ GLOBALS» soit super global. Qu'est-ce que c'est. .. ..

$GLOBALS (PHP 4, PHP 5, PHP 7)

$ GLOBALS - Une référence à toutes les variables disponibles dans la portée globale

Description Un tableau associatif contenant des références à toutes les variables actuellement définies dans la portée globale du script. Le nom de la variable est la clé du tableau.

<?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();
?>

Résultat de sortie
$foo in global scope: Example content
$foo in current scope: local variable

En d'autres termes, si vous l'assignez à la variable globale $ foo, elle sera appliquée à tous $ GLOBALS [" foo "], qu'elle soit dans la méthode ou non. La valeur est-elle attribuée? (En Java, setter est requis si private est attaché, donc j'ai peur qu'il puisse être facilement attribué, ...)

・ Super global ne nécessite pas de déclaration globale, sinon une déclaration globale est requise

<?php
function test_global()
{
// La plupart des variables prédéfinies ne sont pas "super", mais dans une fonction
// Vous devez appeler «global» pour l'activer dans la portée locale.
   global $HTTP_POST_VARS;
   
   echo $HTTP_POST_VARS['name'];
   
// Super global est valide dans n'importe quelle portée
// Pas besoin d'appeler "global".
// Super Global est disponible en PHP 4.1.0 et supérieur.
// HTTP_POST_VARS est désormais obsolète.
   echo $_POST['name'];
}
?>

-Variable statique (statique)

Les variables statiques n'existent que dans la portée de la fonction locale, mais elles ne perdent pas leur valeur lorsque l'exécution du programme sort de cette portée.

<?php
function test()
{
   static $a = 0;
   echo $a;
   $a++;
}
?>

↑ Sans statique, il est initialisé avec $ a = 0 chaque fois que test () est appelé. Avec static, si test () est appelé, $ a ++ augmentera la valeur de $ a.

・ Fonction récursive

<?php
function test()
{
   static $count = 0;

   $count++;
   echo $count;
   if ($count < 10) {
       test();
   }
   $count--;
} / * $ count augmente à 1,2,3, ..., 9,10 * /
?>

↑ S'il n'y a pas de statique ici, il sera initialisé avec $ count = 0 à chaque fois.

Au fait, faites attention à la façon de déclarer des variables statiques! ** **

<?php
function foo(){
static $ int = 0; // correct
static $ int = 1 + 2; // Correct (mais uniquement pour PHP 5.6 et supérieur)
static $ int = sqrt (121); // Incorrect (en utilisant la fonction)

   $int++;
   echo $int;
}
?>

Résumé

J'ai cherché des variables, mais je l'ai compris de façon inattendue. Cependant, cela semble déroutant si vous ne connaissez pas toujours la plage de portée. Je ne sais pas si j'utiliserai PHP. .. ..

Je continuerai à écrire à ma manière.

Recommended Posts

J'ai recherché des variables PHP
J'ai recherché l'encodage d'URL
J'ai cherché CSRF dans Ruby's Gem
J'ai comparé les constructeurs PHP et Java
J'espère sincèrement que Stream # rejette