Računalniki Windows internet

Seznam vseh spremenljivk v php. Obseg spremenljivk PHP. Vse, kar ste želeli vedeti, a ste se bali vprašati. Statične spremenljivke: so nekje naokoli

spremenljivke v php je neke vrste informacijski vsebnik, ki lahko vsebuje različni tipi podatke (besedilo, številke, nizi itd.). Na splošno vam spremenljivke omogočajo ustvarjanje, shranjevanje, spreminjanje in nato hiter dostop do informacij, navedenih v njih.

Kako ustvariti spremenljivko v PHP

Na začetku spremenljivke vsebujejo znak $ (dolar) - oznaka uporabe spremenljivke, nato črke latinska abeceda(od a do ž ter majhne in velike), na koncu lahko vsebuje številke. V naslovu je dovoljena tudi uporaba podčrtaja (ne na koncu).

Kako poimenovati spremenljivke:

$var
$spremenljivka
$leto 1945
$_spremenljivka
Kako ne poimenovati spremenljivk:

$1 - je sestavljen samo iz števke
$1var - imena spremenljivke ne morete začeti s številko
$/var - od dodatnih znakov je dovoljen samo podčrtaj _
$variable - cirilica je dovoljena v php dokumentaciji, vendar ni priporočljiva
$var iable - presledkov ni mogoče uporabiti

Vsaki spremenljivki je dodeljena vrednost. Znak se uporablja za dodelitev vrednosti. = (enako). Med obdelavo skripta se lahko vrednost spremenljivke večkrat spreminja glede na različne pogoje.

$city = "Moskva"; // spremenljivki $city je bila dodeljena vrednost niza (v narekovajih) Moskva
$leto = 1147; // in spremenljivki $year je bila dodeljena številčna vrednost 1147
?>

$name = "Aleksandar";
$Name = "Alex";
echo "$name, $Name"; // natisne "Alexander, Alexey"
?>

Izhod spremenljivke PHP

Ločeno bi morali analizirati, kako prikazati spremenljivke z uporabo izhodne izjave, katerega delo smo analizirali v zadnji lekciji Ustvarjanje strani PHP. izhodni operaterji. . Spodaj bom navedel številne ilustrativne primere s komentarji.

// Tako nastavimo vrednosti spremenljivk
$name1 = "Alex";
$name2 = "Aleksandar";

// Prikaz spremenljivk
echo $name2; // Izhod: Alexander
echo "ime1 je $name1"; // ime1 je Aleksej

// Ko uporabljate enojne narekovaje, izpis
// ime spremenljivke, ne vrednost
echo "ime1 je $name1"; // izhod: ime1 je $name1

// lahko prikažete samo vrednosti spremenljivk
odmev $name1; // Aleksej
odmev $name1,$name2; // Aleksej Aleksander
echo $name1." ".$name2; // Aleksej Aleksander
echo "$name1, $name2"; // Aleksej, Aleksander

odmev<<To za izpis uporablja sintakso "tukaj dokument".
več vrstic z zamenjavo $variable.
KONEC;

Operacije s spremenljivkami PHP

Aritmetične operacije v PHP
V primeru številskih vrednosti se lahko izvajajo aritmetične operacije: seštevanje, odštevanje, množenje itd.

-$a(negacija) Spremenite predznak $a.
$a + $b(seštevanje) Vsota $a in $b.
$a - $b(odštevanje) Razlika med $a in $b.
$a * $b(pomnoži) Zmnožek $a in $b.
$a / $b(deljenje) Kvocient $a, deljen z $b.
$a % $b(modulo) Celotni ostanek $a, deljen z $b.
Razmislite o primerih

$a = 2; // upoštevajte, da v primeru številk narekovaji niso postavljeni
$b = 3; // upoštevajte, da v primeru številk narekovaji niso postavljeni

$rezultat = $a + $b; // dodaj spremenljivke
echo $result; // natisne 5

$rezultat = $b - $a; // dodaj spremenljivke
echo $result; // natisne 1

Operacije povečanja in zmanjšanja v PHP
Te operacije bodo uporabne predvsem pri gradnji ciklov, o katerih bomo govorili malo kasneje.
predpona- operatorji, napisani PRED spremenljivko ( --$a; ++$a). Vrni vrednost spremenljivke pred spremembami.
Postfix- operatorji, napisani za spremenljivko ( $a--; $a--). Vrni vrednost spremenljivke s spremembami.
Prirast- povečanje vrednosti.
Zmanjšanje- padajoča vrednost.

++$a prirast predpone. Poveča $a za eno in vrne vrednost $a.
$a++ postfiksni prirast. Vrne vrednost $a in nato poveča $a za eno.
--$a zmanjšanje predpone. Zmanjša $a za eno in vrne vrednost $a.
$a-- Postfix dekrement. Vrne vrednost $a in nato zmanjša $a za eno.
odmev "

Postfix prirast

";
$a = 5;
echo "Mora biti 5: ". $a++ . "\n";

odmev"

prirast predpone

";
$a = 5;
echo "Mora biti 6: ". ++$a . "\n";
echo "Mora biti 6: ". $a . "\n";

odmev"

Postfix dekrement

";
$a = 5;
echo "Mora biti 5: ". $a-- . "\n";

odmev"

zmanjšanje predpone

";
$a = 5;
echo "Mora biti 4: ". --$a . "\n";
echo "Mora biti 4: ". $a . "\n";
?>

Operacije dodelitve v PHP
Osnovni operater izgleda kot = . Na prvi pogled se morda zdi, da je to operator enakovrednosti. Pravzaprav ni. Operater dodelitve dejansko pomeni, da levi operand dobi vrednost desnega izraza (tj. je nastavljen na dobljeno vrednost). Kombinirani operaterji- to so operatorji, ki vam omogočajo uporabo prejšnjih vrednosti spremenljivk za nadaljnje operacije (priložite spremenljivki niza (z besedilom) ali dodate številske vrednosti).

$a = ($b = 2) + 4; // rezultat: $a je nastavljena na 6, $b je nastavljena na 2.

$a = 2;
$a += 3; // nastavi $a na 5, podobno kot $a = $a + 3;
$b = "Živjo";
$b .= "Mir!"; // nastavi $b na "Hello World!", kot je $b = $b . "Tam!";

Tukaj so tudi primerjalne operacije in uganka, o njih pa bomo govorili v naslednjih urah. Poskušal vas bom ne prestrašiti z veliko količino informacij naenkrat!)

V nadaljevanje prejšnjega vprašanja z novimi podrobnostmi Torej: Stran v oblaku, tema - Privzeto 3.0, can_use_smarty = true Na podstraneh izdelka koda Smarty deluje precej dobro, možen je dostop in prikaz potrebnih spremenljivk V opisu izdelka -...

Zdravo. V datoteki checkout.html je spremenljivka $cart_total = $wa->shop->cart->total(), ki vsebuje končno ceno. In kako ta strošek razčleniti na strošek dostave in strošek naročila ter vse to prikazati na spletnem mestu?Hvala.

Obstaja rešitev

Dober dan, povej mi, pliz. Imam več ID-jev izdelkov. Na primer, 1, 3, 5. Želim pridobiti podatke iz $wa->shop->product() o njih. Podatke o izdelkih za te 3 ID-je moram dodeliti spremenljivki. Kako lahko to storim? Ni dobro v ...

Nekaj ​​takega (pišem po spominu, moram preveriti)($all_my_products = $wa->shop->products()) (za $all_my_products kot $ab)

($ab|var_dump)
(/za vsakogar)

Na izložbi želim prikazati 3 cene hkrati Obstaja rešitev

Zdravo! V IM obstajajo 3 standardne cene: nabavna, prečrtana in maloprodajna. Prav tako sem s pomočjo vtičnika Multiprices ustvaril še 2 dodatni ceni Veleprodaja, Prodajalec. Vse 3 cene morajo biti prikazane za vse kupce, ko pa stranka...

Vprašanje je zaprto - fantje to že počnejo.

Katera poizvedba lahko prikaže seznam razpoložljivih spremenljivk Obstaja rešitev

Povejte mi, kaj lahko uporabite pri razvoju razen (debug) in (wa_dumpc($order)) za ogled razpoložljivih spremenljivk na strani in tako naprej ... Katere konstrukcije in poizvedbe lahko uporabite pri razvoju?

(wa_tpl_vars) - Pomočnik, ki vam omogoča prikaz vseh spremenljivk, posredovanih trenutni predlogi.... o tej zadevi smo že razpravljali.

Obstaja rešitev

Pozdravljeni, v php ne razumem ničesar, obstaja samo splošni koncept, o ciklih, nizih itd. Dober sem v css, html, bootstap, uikit, ker ne razumem okvira, ne morem ga uporabljati v celoti, nisem razumel, kako delujejo dejanja in kje jih dobiti (npr. ...

Glejte opis mehanizma za predloge Smarty. Predloga posreduje spremenljivke, ki so oblikovane in dane uporabniku. Če želite izvedeti, kaj je v spremenljivki, jo lahko natisnete ločeno ($post|wa_print_r)(foreach $post.plugins. prej kot $plugin => $output) ($ output) (/foreach)Uporabite to kodo, da dobite matriko iz spremenljivke $post.plugins.before, ki vsebuje ključ ($plugin) in vrednost ($output)Izhod vseh vrednosti ($output) na stran.

+1 Ni sprejeto

Spremenljivke iz Cheat Sheet ne delujejo, ko jih vstavite v obvestila o naročilu, pa tudi v vaš tiskani obrazec za naročilo ...

Izboljšanje teme Privzeto 2.0

Treba je narediti več izboljšav zasnove Privzeto 2.0 1. Poravnajte višino slik izdelkov v kategorijah https://yadi.sk/i/JazqloIg3ZQU... 2. Spremenite izpis Kratek opis, prikaži dodatna polja z ikonami ...

Dober dan! Povejte mi, prosim, kako v košarici in katalogu (seznam blaga) izpišem značilnosti blaga, ki so izbrane ročno, na primer velikost? 1) V košarici je že izbrana vrednost. Standardna datoteka predloge (product.cart.html).2) Na seznamu izdelkov...

Prosim, pomagajte mi ugotoviti. Kje lahko najdem popolnejšo dokumentacijo o motorju. Namreč, zanimajo me vse pametne spremenljivke, kako naj uganem s katero kodo naj prikažem katalog izdelkov, košarico, sliko izdelka, karakteristike itd. in ...

Obstaja rešitev

Dober večer. Treba je bilo narediti nekaj spustnih menijev. je identična, je seveda začela vladati. Takoj ko sem ...

Lahko naredite preprost spustni meni, ne da bi celo kopirali dele kode, povezane s skripti teme oblikovanja, ampak ustvarite svoj meni. Tukaj je skript (prilepite ga v predlogo teme) 350ms je čas pojavljanja, po želji pa lahko dodate več različnih učinkov. Nato ustvarite dva predmeta razredov open in menu

user("email")), ko prikažem naslov, se prikaže 2 krat (v tabeli sem našel 2 zapisa v eni vrsti 0, drugi 1)...

Naslovno polje je sestavljeno (sestavljeno iz podpolj), zato, če želite prikazati določen podelement, morate določiti, kateri. Na primer, tako ($addr = $wa->user("address")) Mesto: ($addr.data.city) kaže na prvi naslov v nizu kontaktnih naslovov (naslovov je lahko več: naslov za dostavo , naslov plačnika, službeni naslov, osebni itd.) Dokumentacija: http://www.webasyst.ru/developers/docs/features/contacts-app-integration/

+9

Tovariši! Pred kratkim sem naletel na težavo s centraliziranim delom vtičnikov s predlogami v oblikovalskih temah. tiste. manjkalo je, obstaja nekaj vtičnikov, ki pravijo: ustvarite predlogo v temi oblikovanja, nato se bo uporabljala in tako naprej ... Izkazalo se je ...

Obstaja rešitev

Opazil sem, da na spletnem mestu (mesto aplikacije), da se ne zamenja s trgovino, oznake niso prikazane na straneh. Šel sem na spletno stran webasyst, vse je ok, kako to implementirati, kam vstaviti katero kodo? In zakaj to ni privzeto?

Spletno mesto – Strani – Izberite stran in na vrhu Nastavitve strani – razdelek Družabno omrežje.

Izhod PHP kode

Obstajajo 3 glavne datoteke (index.php), datoteka z javascriptom in datoteka php V datoteki javascript je datoteka php povezana takole var JSONReviewsGeneratorReference = "pot do datoteke php"; Toda izkazalo se je, da php kode v shopscriptu ni mogoče uporabiti (na ...

Prosim, povejte mi, kdo ve. Imam temo Oblikovanje z okusom 2. V katalogu izdelkov, kjer so prikazani vsi izdelki z imenom in ceno, je treba poleg cene prikazati artikel tega izdelka. Obrnil sem se na razvijalca teme, pravi, da ne poznam spremenljivke. kako...

pred 12 leti

Nekaj ​​malenkosti, na katero morate biti pozorni:

Če izklopite RegisterGlobals in povezane, nato uporabite get_defined_vars(), boste morda videli nekaj takega:

niz
[ GLOBALNI ] => Niz
[ GLOBALNI ] => Niz
* REKURSIJA *
[_POST] => Array()
[_GET] => Array()
[_COOKIE] => Array()
[ _FILES ] => Array()
)

[_POST] => Array()
[_GET] => Array()
[_COOKIE] => Array()
[ _FILES ] => Array()

)
?>

Upoštevajte, da $_SERVER ni tam. Zdi se, da php naloži superglobalni $_SERVER samo, če se nekje uporablja. To lahko storite:

natisni"

" .htmlspecialchars(print_r(get_defined_vars(), true)) ."
" ;
natisni"
".htmlposebni znaki (print_r ($_SERVER, true)) ."
" ;
?>

Nato se bo na obeh seznamih pojavil $_SERVER. Predvidevam, da "v resnici ni problem, saj se tako ali tako ne bo zgodilo nič hudega, vendar je kljub temu zanimiva zanimivost.

pred 6 leti

Ker get_defined_vars() dobi spremenljivke samo na točki, ki jo pokličete funkcijo, obstaja preprost način, da dobite spremenljivke, definirane v trenutnem obsegu.

// sam vrh vašega php skripta
$vars = get_defined_vars();

// Zdaj pa naredi svoje
$foo = "foo";
$bar = "bar";

// Dobi vse spremenljivke, definirane v trenutnem obsegu
$vars = array_diff(get_defined_vars(), $vars);

odmev "

"
;
print_r($vars);
odmev "
" ;
?>

pred 15 leti

Tukaj je funkcija, ki ustvari poročilo o odpravljanju napak za prikaz ali e-pošto
z uporabo get_defined_vars. Odlično za podroben posnetek brez
zanašajo se na vnos uporabnikov.

funkcija generateDebugReport ($method, $defined_vars, $email = "nedefinirano")(
// Funkcija za ustvarjanje poročila o odpravljanju napak za prikaz ali e-pošto.
// Uporaba: generateDebugReport(method,get_defined_vars(),e-pošta);
// Kjer je metoda "brskalnik" ali "e-pošta".

// Ustvarite prezrt seznam za ključe, ki jih vrne "get_defined_vars".
// Na primer HTTP_POST_VARS, HTTP_GET_VARS in drugi so
// odveč (enako kot _POST, _GET)
// Vključite tudi vars, ki jih želite prezreti iz varnostnih razlogov – t.j. PHPSESSID.
$ignorelist =array("HTTP_POST_VARS" , "HTTP_GET_VARS" ,
"HTTP_COOKIE_VARS" , "HTTP_SERVER_VARS" ,
"HTTP_ENV_VARS" , "HTTP_SESSION_VARS" ,
"_ENV", "PHPSESSID", "SESS_DBUSER",
"SESS_DBPASS", "HTTP_COOKIE");

$timestamp = datum("m/d/y h:m:s");
$message = "Poročilo o odpravljanju napak je ustvarjeno $timestamp \n" ;

// Pridobite zadnjo napako SQL za dobro mero, kjer je $link identifikator vira
// za mysql_connect. Komentirajte ali spremenite svojo bazo podatkov ali nastavitev abstrakcije.
globalna $link ;
$sql_error = mysql_error($link);
if($sql_error)(
$message .= "\nMysql sporočila:\n" . mysql_error($link);
}
// Končaj MySQL

// Tukaj lahko uporabimo rekurzivno funkcijo. Dobiš idejo ;-)
foreach($defined_vars kot $key => $val )(
if(is_array ($val) && ! in_array ($key, $ignorelist) && count ($val) > 0)(
$message .= "\n niz $ključev (ključ=vrednost):\n" ;
foreach($val kot $subkey => $subval )(
if(! in_array ($subkey, $ignorelist) && ! is_array ($subval))(
$message .= $podključ. "=" . $subval . "\n" ;
}
elseif(! in_array ($subkey, $ignorelist) && is_array ($subval))(
foreach($subval kot $subkey => $subval )(
if(! in_array ($subkey, $ignorelist))(
$message .= $subkey. "=" . $subval . "\n" ;
}
}
}
}
}
drugače (!
is_array ($val ) && ! in_array ($key, $ignorelist) && $val)(
$message .= "\nSpremenljivka ". $ ključ. "=" . $val. "\n" ;
}
}

If($method == "brskalnik")(
echo nl2br($message);
}
elseif($method == "e-pošta")(
if($email == "nedefinirano" )(
$email = $_SERVER["SERVER_ADMIN"];
}

$mresult = mail ($email , "Poročilo o odpravljanju napak za " . $_ENV [ "HOSTNAME" ]. "" , $message );
if($mresult == 1 )(
odmev "Poročilo o odpravljanju napak je uspešno poslano.\n";
}
drugače (
odmev "Pošiljanje poročila o odpravljanju napak ni uspelo.\n";
}
}
}
?>

pred 17 leti

Preprosta rutina za pretvorbo predmeta get_defined_vars v XML.

funkcija obj2xml ($v, $indent = "") (
medtem ko (seznam($key, $val) = vsak ($v)) (
if ($key == "__attr" ) nadaljuj;
// Preverite __attr
če (is_object ($val -> __attr)) (
medtem ko (seznam($key2, $val2) = vsak ($val -> __attr)) (
$attr .= " $key2 =\" $val2 \"" ;
}
}
drugače $attr = "" ;
če (is_array ($val) || is_object ($val)) (
print(" $indent< $key$attr >\n");
obj2xml ($val, $indent. "");
print(" $indent\n");
}
drugače print(" $indent< $key$attr >$val\n");
}
}

//Primer predmeta
$x -> ime -> first = "Janez" ;
$x -> name -> last = "Smith" ;
$x -> arr [ "Sadje" ] = "Banana";
$x -> arr [ "Veg" ] = "Korenček";
$y -> stranka = $x;
$y -> stranka -> __attr -> id = "176C4" ;

$z = get_defined_vars();
obj2xml($z["y"]);
?>
bo izpisal:


Janez
Smith


Banana
korenček

pred 10 leti

Opomba: get_defined_vars() ne vrne niza referenc spremenljivk (kot sem upal). Na primer:

// definiramo spremenljivko
$my_var = "foo";

// dobimo naš seznam definiranih spremenljivk
$defined_vars = get_defined_vars();

// zdaj poskusite spremeniti vrednost prek vrnjene matrike
$defined_vars [ "my_var" ] = "bar";

echo $my_var , "\n" ;

?>

bo izpisal "foo" (izvirna vrednost). Lepo bi bilo, če bi get_defined_vars() imel neobvezen argument, da bi jih skliceval, vendar si predstavljam, da je to precej specializirana zahteva. To lahko storite sami (manj priročno) z nečim kot je:

$defined_vars = array();
$var_names = array_keys(get_defined_vars());

foreach ($var_names kot $var_name)
{
$defined_vars [ $var_name ] =& $ $var_name;
}

?>

pred 1 letom

Tukaj sem že objavil, da je "to" v get_defined_vars.

Izkazalo se je, da "ni vedno tam, vendar se bo v določenih primerih pojavil nerazložljivo.

PHP -r"
razredni preizkus (
javna funkcija a() (var_dump(array_keys(get_defined_vars()));$a = 123;)
javna funkcija b() (var_dump(array_keys(get_defined_vars()));$this;)
}
$t = nov test();
$t->a();
$t->b();
"

array()
niz ("to")

To se ne zgodi v PHP 7.2, vendar se bo zgodilo v PHP 5.6.

pred 1 letom

Nekateri komentarji tukaj poudarjajo, da ta funkcija ne bo vrnila referenc. Vendar pa vrne imena in imena so "reference".

Tukaj ne priporočam predlogov, ki ga pretvorijo v reference.

javna funkcija x($a, $b, $c) (
foreach(array_keys(get_defined_vars()) kot $key)
if($key !== "to")
$this->y($($key));
}

Javna funkcija y(&$input) (
$input++;
}

Namesto $() lahko uporabite tudi $$.

V svojem času sem naredil nekaj čudnih stvari, da sem naredil izjemno generično kodo, vendar mi nikoli ni bilo treba storiti ničesar podobnega zgoraj. Morda niti ne bo delovalo (vendar bi moralo, ker se ne razlikuje od $a[$key]).

Lahko bi naredili tudi $$key++, vendar še nikoli nisem videl takšne kode, ki ni bila grozljivo slaba (uporaba dinamike, kjer dinamika ni koristna).

Če počnete nekaj takega, ga dodatno preglejte.

Spremenljivke okolja (okolje) v sistemu Windows vsebujejo različne informacije o sistemskih nastavitvah in uporabnikovem okolju. Razlikujemo med spremenljivkami okolja uporabnika, sistema in procesa.

Najlažji način za ogled vsebine spremenljivk okolja v sistemu Windows je, da odprete lastnosti sistema ( sysdm.cpl) -> Napredno -> Spremenljivke okolja. Kot lahko vidite, sta v odprtem razdelku dva razdelka: zgornji vsebuje spremenljivke okolja uporabnika, spodnji pa sistemske.

Poleg tega so spremenljivke okolja shranjene v sistemskem registru. Uporabniške spremenljivke so shranjene v . Sistemski - v HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.

V ukazni vrstici Windows lahko prikažete vrednosti vseh spremenljivk okolja. Ukaz je preprost:

Ukaz bo navedel spremenljivke okolja in njihove vrednosti.

V PowerShell lahko za prikaz vseh spremenljivk okolja uporabite ukaz:

Če želite prikazati vrednost samo ene spremenljivke, morate uporabiti ukaz echo, ime spremenljivke pa mora biti obdano z znaki odstotkov. na primer,

echo %systemroot%

set > c:\tmp\env_var.txt

Okoljske spremenljivke določenega procesa je mogoče pridobiti z brezplačnim Pripomočki Process Explorer(iz Sysinternals). Samo odprite lastnosti procesa in pojdite na zavihek Okolje.

Ta lekcija se osredotoča na obseg spremenljivk PHP. Pojasnjuje razliko med lokalnim in globalnim obsegom, prikazuje, kako dostopati do globalnih spremenljivk znotraj funkcije, kako delati s superglobali in ustvarjati statične spremenljivke.

Ko se začnete učiti PHP in začnete delati s funkcijami in predmeti, je obseg spremenljivke nekoliko zmeden. Na srečo so pravila PHP v tem pogledu zelo enostavna za razumevanje (v primerjavi z drugimi programskimi jeziki).

Kaj je obseg?

Obseg spremenljivke je kontekst, v katerem je bila spremenljivka definirana in kje je mogoče dostopati. PHP ima dva spremenljiva obsega:

  • Globalno- do spremenljivk lahko dostopate kjer koli v skriptu
  • Lokalni- do spremenljivk je mogoče dostopati samo znotraj funkcije, v kateri so bile definirane

Spremenljiv obseg, zlasti lokalni obseg, močno poenostavi upravljanje kode. Če bi bile vse spremenljivke globalne, bi jih lahko spremenili kjer koli v skriptu. To bi povzročilo kaos in velike skripte, saj zelo pogosto različni deli skripte uporabljajo spremenljivke z istim imenom. Z omejevanjem obsega na lokalni kontekst definirate meje kode, ki lahko dostopa do spremenljivke, zaradi česar je koda bolj robustna, modularna in enostavnejša za odpravljanje napak.

Spremenljivke z globalnim obsegom se imenujejo globalne spremenljivke, tiste z lokalnim obsegom pa lokalne spremenljivke.

Tukaj je primer delovanja globalnih in lokalnih spremenljivk.

"; ) sayHello(); echo "Vrednost \$globalName: "$globalName"
"; echo "Vrednost \$localName: "$localName"
"; ?>

Živjo Harry! $globalName vrednost: "Zoya" $localName vrednost: ""

V tem skriptu smo ustvarili dve spremenljivki:

  • $globalName- to globalno spremenljivka
  • $localName- to lokalni spremenljivka, ki je ustvarjena znotraj funkcije sayHello().

Ko sta spremenljivka in funkcija ustvarjena, skript pokliče sayHello() , ki natisne "Hi Harry!" . Skript nato poskuša iznesti vrednosti dveh spremenljivk s funkcijo echo. Evo, kaj se zgodi:

  • Ker $globalName je bila ustvarjena zunaj funkcije, je na voljo kjer koli v skriptu, zato je prikazana "Zoya".
  • $localName bo na voljo samo znotraj funkcije sayHello(). Ker je izraz echo zunaj funkcije, PHP ne dovoljuje dostopa do lokalne spremenljivke. Namesto tega PHP predvideva, da bo koda ustvarila novo spremenljivko z imenom $localName , ki bo privzeto navedla prazen niz. zato drugi klic echo izpiše vrednost "" za spremenljivko $localName.

Dostop do globalnih spremenljivk znotraj funkcije

Za dostop do globalne spremenljivke zunaj funkcije samo napiši njeno ime. Toda za dostop do globalne spremenljivke znotraj funkcije, morate najprej deklarirati spremenljivko kot globalno v funkciji s ključno besedo global:

Funkcija myFunction() (globalna $globalVariable; // Dostop do globalne spremenljivke $globalVariable)

Če tega ne storite, potem PHP predvideva, da ustvarjate ali uporabljate lokalno spremenljivko.

Tukaj je primer skripta, ki uporablja globalno spremenljivko znotraj funkcije:

"; globalno $globalName; echo "Pozdravljeni, $globalName!
"; ) reci Pozdravljeni(); ?>

Ko se izvede, bo skript izpisal:

Živjo Harry! Pozdravljeni Zoya!

Funkcija sayHello() uporablja ključno besedo global, da spremenljivko $globalName razglasi za globalno. Nato lahko dostopa do spremenljivke in izpiše njeno vrednost ("Zoya").

Kaj so superglobali?

PHP ima poseben nabor vnaprej določenih globalnih nizov, ki vsebujejo različne informacije. Take matrike se imenujejo superglobali, saj so dostopni od koder koli v skriptu, vključno z notranjim prostorom funkcij, in jih ni treba definirati s ključno besedo global.

Tukaj je seznam superglobalov, ki so na voljo v različici PHP 5.3:

  • $GLOBALS - seznam vseh globalnih spremenljivk v skriptu (razen superglobal)
  • $_GET - vsebuje seznam vseh polj obrazca, ki jih je brskalnik poslal z zahtevo GET
  • $_POST - vsebuje seznam vseh polj obrazca, ki jih je brskalnik poslal z zahtevo POST
  • $_COOKIE - vsebuje seznam vseh piškotkov, ki jih pošlje brskalnik
  • $_REQUEST - vsebuje vse kombinacije ključ/vrednost v nizih $_GET, $_POST, $_COOKIE
  • $_FILES - vsebuje seznam vseh datotek, ki jih je naložil brskalnik
  • $_SESSION - omogoča shranjevanje in uporabo spremenljivk seje za trenutni brskalnik
  • $_SERVER - vsebuje informacije o strežniku, kot je ime datoteke skripta, ki se izvaja, in naslov IP brskalnika.
  • $_ENV – Vsebuje seznam spremenljivk okolja, posredovanih v PHP, kot so spremenljivke CGI.
Uporabite lahko na primer $_GET, da dobite vrednosti spremenljivk, ki jih vsebuje niz URL zahteve skripta, in jih prikažete na strani:

Če zaženete zgornji skript z URL-jem http://www.example.com/script.php?yourName=Fred, bo izpisal:

Hej Fred!

Opozorilo! V resničnem skriptu se ta prenos podatkov nikoli ne sme uporabljati zaradi šibke varnosti. Podatke morate vedno preveriti ali filtrirati.

Superglobal $GLOBALS je zelo priročen za uporabo, saj vam omogoča, da organizirate dostop do globalnih spremenljivk v funkciji, ne da bi morali uporabiti globalno ključno besedo. Na primer:

"; ) sayHello(); // Prikaže "Hello Zoya!" ?>

Statične spremenljivke: so nekje naokoli

Ko ustvarite lokalno spremenljivko znotraj funkcije, ta obstaja samo, ko se funkcija izvaja. Ko se funkcija konča, lokalna spremenljivka izgine. Ko je funkcija ponovno poklicana, se ustvari nova lokalna spremenljivka.

V večini primerov to deluje odlično. Tako so funkcije samozadostne in vedno delujejo na enak način ob vsakem klicu.

Vendar pa obstajajo situacije, ko bi bilo priročno ustvariti lokalno spremenljivko, ki si "zapomni" svojo vrednost med klici funkcij. Takšna spremenljivka se imenuje statična.

Če želite v funkciji ustvariti statično spremenljivko, morate pred imenom spremenljivke uporabiti ključno besedo static in ji dati začetno vrednost. Na primer:

Funkcija myFunction() (statična $myVariable = 0;)

Razmislite o situaciji, ko je priročno uporabiti statično spremenljivko. Recimo, da ustvarite funkcijo, ki ob klicu ustvari gradnik in natisne število že ustvarjenih pripomočkov. Lahko poskusite napisati tako kodo z lokalno spremenljivko:


"; echo createWidget(). " smo že ustvarili.
"; echo createWidget(). " smo že ustvarili.>
"; ?>

Ker pa je spremenljivka $numWidgets ustvarjena vsakič, ko je funkcija poklicana, dobimo naslednji rezultat:

Ustvarili smo nekaj pripomočkov ... 1 smo že ustvarili. 1 smo že ustvarili. 1 smo že ustvarili.

Toda z uporabo statične spremenljivke lahko ohranimo vrednost od enega klica funkcije do naslednjega:

"; echo createWidget(). " smo že ustvarili.
"; echo createWidget(). " smo že ustvarili.
"; echo createWidget() . " >smo že ustvarili.
"; ?>

Zdaj bo skript ustvaril pričakovani rezultat:

Ustvarili smo nekaj pripomočkov ... 1 smo že ustvarili. 2 smo že ustvarili. 3 smo že ustvarili.

Čeprav statična spremenljivka ohrani svojo vrednost med klici funkcij, je veljavna le, ko se skript izvaja. Ko skript dokonča svojo izvedbo, se uničijo vse statične spremenljivke, pa tudi lokalne in globalne spremenljivke.

To je vse! Pogosto glejte dokumentacijo PHP.