Računala Windows Internet

Popis svih varijabli u php. Opseg PHP varijabli. Sve što ste htjeli znati, ali ste se bojali pitati. Statičke varijable: one su negdje u blizini

varijable u php je vrsta informacijskog spremnika koji može sadržavati različiti tipovi podatke (tekst, brojevi, nizovi i tako dalje). Općenito, varijable vam omogućuju stvaranje, pohranjivanje, izmjenu, a zatim brzi pristup informacijama navedenim u njima.

Kako stvoriti varijablu u PHP-u

U početku, varijable sadrže znak $ (dolar) - oznaka upotrebe varijable, zatim slova latinično pismo(od a do z i male i velike), na kraju mogu sadržavati brojevima. Također je dopušteno koristiti donju crtu (ne na kraju) u naslovu.

Kako imenovati varijable:

$var
$varijabilna
godine 1945
$_varijable
Kako ne imenovati varijable:

$1 - sastoji se samo od znamenke
$1var - naziv varijable ne možete započeti brojem
$/var - od dodatnih znakova dopuštena je samo podvlaka _
$varijable - ćirilica je dopuštena php dokumentacijom, ali se ne preporučuje
$var iable - razmaci se ne mogu koristiti

Svakoj varijabli dodjeljuje se vrijednost. Znak se koristi za dodjelu vrijednosti. = (jednako). Tijekom obrade skripte, vrijednost varijable može se više puta mijenjati ovisno o različitim uvjetima.

$city = "Moskva"; // varijabli $city je dodijeljena vrijednost niza (u navodnicima) Moskva
$godina = 1147; // i varijabli $year je dodijeljena brojčana vrijednost 1147
?>

$name = "Aleksandar";
$Name = "Alex";
echo "$name, $Name"; // ispisuje "Aleksandar, Aleksej"
?>

Izlaz PHP varijable

Zasebno, trebali biste analizirati kako prikazati varijable pomoću izlazne izjave, čiji smo rad analizirali u prošloj lekciji Izrada PHP stranice. izlazni operateri. . U nastavku ću dati niz ilustrativnih primjera s komentarima.

// Ovako postavljamo vrijednosti varijabli
$name1 = "Alex";
$name2 = "Aleksandar";

// Prikaz varijabli
echo $name2; // Izlaz: Aleksandar
echo "name1 je $name1"; // ime1 je Alexey

// Kada koristite jednostruke navodnike, ispis
// ime varijable, a ne vrijednost
echo "name1 je $name1"; // izlaz: ime1 je $name1

// možete prikazati samo vrijednosti varijabli
echo $name1; // Aleksej
echo $name1,$name2; // AlexeyAlexander
echo $name1." ".$name2; // Aleksej Aleksandar
echo "$name1, $name2"; // Aleksej, Aleksandar

jeka<<Ovo koristi sintaksu "ovdje dokument" za izlaz
više redaka sa zamjenom $varijable.
KRAJ;

PHP operacije varijabli

Aritmetičke operacije u PHP-u
U slučaju brojčanih vrijednosti mogu se izvoditi aritmetičke operacije: zbrajanje, oduzimanje, množenje i tako dalje.

-$a(negacija) Promijenite predznak $a.
$a + $b(zbrajanje) Zbroj $a i $b.
$a - $b(oduzimanje) Razlika između $a i $b.
$a * $b(množi) Umnožak $a i $b.
$a / $b(podjela) Kvocijent od $a podijeljen s $b.
$a % $b(modulo) Cjelobrojni ostatak od $a podijeljen s $b.
Razmotrite primjere

$a = 2; // imajte na umu da se u slučaju brojeva ne stavljaju navodniki
$b = 3; // imajte na umu da se u slučaju brojeva ne stavljaju navodniki

$rezultat = $a + $b; // dodaj varijable
odjek $rezultat; // ispisuje 5

$rezultat = $b - $a; // dodaj varijable
odjek $rezultat; // ispisuje 1

Operacije povećanja i smanjenja u PHP-u
Ove će operacije biti korisne uglavnom u konstrukciji ciklusa, o čemu ćemo govoriti nešto kasnije.
prefiks- operatori napisani PRIJE varijable ( --$a; ++$a). Vrati vrijednost varijable prije promjena.
Postfix- operatori napisani nakon varijable ( $a--; $a--). Vrati vrijednost varijable s promjenama.
Povećanje- povećanje vrijednosti.
Smanjenje- smanjenje vrijednosti.

++$a prirast prefiksa. Povećava $a za jedan i vraća vrijednost $a.
$a++ postfiksni prirast. Vraća vrijednost $a i zatim povećava $a za jedan.
--$a dekrement prefiksa. Smanjuje $a za jedan i vraća vrijednost $a.
$a-- Postfiksni dekrement. Vraća vrijednost $a i zatim smanjuje $a za jedan.
jeka "

Postfix prirast

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

jeka"

prirast prefiksa

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

jeka"

Postfiksni dekrement

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

jeka"

dekrement prefiksa

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

Operacije dodjele u PHP-u
Osnovni operater izgleda kao = . Na prvi pogled može se činiti da je to operator jednakosti. Zapravo nije. U stvari, operator dodjele znači da lijevi operand dobiva vrijednost desnog izraza (tj. postavljen je na rezultirajuću vrijednost). Kombinirani operateri- to su operatori koji vam omogućuju korištenje prethodnih vrijednosti varijabli za sljedeće operacije (dodavanje varijabli niza (s tekstom) ili dodavanje numeričkih vrijednosti).

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

$a = 2;
$a += 3; // postavlja $a na 5, slično kao $a = $a + 3;
$b = "Bok";
$b .= "Mir!"; // postavlja $b na "Hello World!" kao $b = $b . "Tamo!";

Također postoje operacije usporedbe i mozgalica, ali o njima ćemo govoriti u sljedećim lekcijama. Pokušat ću vas ne uplašiti velikom količinom informacija odjednom!)

U nastavku prethodno postavljenog pitanja s novim detaljima Dakle: Stranica u oblaku, tema - Default 3.0, can_use_smarty = true Na podstranicama proizvoda Smarty kod radi dosta dobro, moguće je pristupiti i prikazati potrebne varijable U opisu proizvoda -...

Zdravo. U datoteci checkout.html nalazi se varijabla $cart_total = $wa->shop->cart->total() koja sadrži konačnu cijenu. I kako ovaj trošak razbiti na cijenu dostave i trošak narudžbe i sve to prikazati na stranici?Hvala.

Postoji rješenje

Dobar dan reci mi pliz. Imam nekoliko ID-ova proizvoda. Na primjer, 1, 3, 5. Želim dobiti podatke od $wa->shop->product() o njima. Moram dodijeliti podatke o proizvodu za ova 3 ID-a varijabli. Kako to mogu učiniti? Nije dobar u...

Nešto poput ovoga (pišem po sjećanju, moram provjeriti)($all_my_products = $wa->shop->products()) (foreach $all_my_products kao $ab)

($ab|var_dump)
(/za svakoga)

Želim prikazati 3 cijene u isto vrijeme na izlogu Postoji rješenje

Zdravo! U IM-u postoje 3 standardne cijene: nabavna, precrtana i maloprodajna. Također, uz pomoć dodatka Multiprices kreirao sam još 2 dodatne cijene Veleprodaja, Trgovac. Sve 3 cijene moraju biti prikazane za sve kupce, ali kada klijent...

Pitanje je zatvoreno - dečki to već rade.

Koji upit može prikazati popis dostupnih varijabli Postoji rješenje

Recite mi što možete koristiti u razvoju osim (debug) i (wa_dumpc($order)) za pregled dostupnih varijabli na stranici i tako dalje... Koje konstrukcije i upite možete koristiti u razvoju?

(wa_tpl_vars) - Pomoćnik koji vam omogućuje da prikažete sve varijable proslijeđene trenutnom predlošku.... o ovom problemu se već raspravljalo.

Postoji rješenje

Pozdrav, ne razumijem ništa u php-u, postoji samo opći koncept, o ciklusima, nizovima itd. Dobar sam u css-u, html-u, bootstapu, uikitu, jer ne razumijem okvir, ne mogu ga koristiti u potpunosti, nisam razumio kako radnje funkcioniraju i gdje ih nabaviti (npr.

Pogledajte opis motora predloška Smarty. Predložak prosljeđuje varijable koje se formiraju i daju korisniku. Da biste saznali što je sadržano u varijabli, možete je ispisati zasebno ($post|wa_print_r)(foreach $post.plugins. prije kao $plugin => $output) ($ output) (/foreach)Upotrijebite ovaj kod da dobijete niz iz varijable $post.plugins.before koji sadrži ključ ($plugin) i vrijednost ($output)Izlaz svih vrijednosti ($output) na stranicu.

+1 Nije prihvaćeno

Varijable iz Cheat Sheet-a ne rade kada se umetnu u Obavijesti o narudžbi, kao ni u vaš tiskani obrazac za narudžbu...

Dorada teme Zadana postavka 2.0

Potrebno je napraviti nekoliko poboljšanja dizajna Default 2.0 1. Poravnajte visinu slika proizvoda u kategorijama https://yadi.sk/i/JazqloIg3ZQU... 2. Promijenite izlaz Kratki opis, prikaz dodatnih polja sa ikonama...

Dobar dan!Molim Vas da mi kažete kako prikazati karakteristike robe u košarici i katalogu (popis robe) koje se biraju ručno, npr. veličina? 1) U košarici već postoji odabrana vrijednost. Standardna datoteka predloška (product.cart.html).2) Na popisu proizvoda...

Molim vas pomozite mi to shvatiti. Gdje mogu naći potpuniju dokumentaciju o motoru. Naime, zanimaju me sve pametne varijable, kako da pogodim kojim kodom trebam prikazati katalog proizvoda, košaricu, sliku proizvoda, karakteristike itd. i...

Postoji rješenje

Dobar dan. Trebalo je napraviti neke padajuće izbornike. identičan je, prirodno počeo njime vladati. Čim sam...

Možete napraviti jednostavan padajući izbornik čak i bez kopiranja dijelova koda koji su povezani sa skriptama teme dizajna, ali kreirajte vlastiti izbornik. Evo skripte (zalijepite je u predložak teme) 350ms je vrijeme pojavljivanja, a ako želite, možete dodati još različitih efekata. Zatim kreirate dva objekta klasa open i menu

user("email")) kada prikažem adresu, ona se prikazuje 2 puta (našao sam 2 zapisa u tablici u jednoj vrsti 0, drugom 1)...

Adresno polje je sastavljeno (sastoji se od potpolja), pa ako želite prikazati određeni podelement, morate odrediti koji. Na primjer, ovako ($addr = $wa->user("address")) Grad: ($addr.data.city) pokazuje na prvu adresu u nizu adresa za kontakt (može biti nekoliko adresa: adresa za dostavu , adresa platitelja, poslovna adresa, osobna itd.) Dokumentacija: http://www.webasyst.ru/developers/docs/features/contacts-app-integration/

+9

drugovi! Nedavno sam naišao na problem s centraliziranim radom dodataka s predlošcima u temama dizajna. Oni. nedostajalo je, postoje neki dodaci koji kažu: stvori predložak u temi dizajna, onda će se koristiti, i tako dalje... Ispada...

Postoji rješenje

Primijetio sam da se na web-mjestu (mjesto aplikacije), da se ne miješa s trgovinom, oznaka ne prikazuje na stranicama. Otišao sam na webasyst web stranicu, sve je ok, kako to implementirati, gdje ubaciti koji kod? A zašto ovo nije zadano?

Web stranica - Stranice - Odaberite stranicu i na vrhu Postavke stranice - odjeljak Društvena mreža.

Izlaz PHP koda

Postoje 3 glavne datoteke (index.php), datoteka s javascriptom i php datoteka U javascript datoteci php datoteka je povezana ovako: var JSONReviewsGeneratorReference = "put do php datoteke"; Ali ispada da se php kod u shopscriptu ne može koristiti (na ...

Molim te reci mi tko zna. Imam temu Tasteful Design 2. Potrebno je u katalogu proizvoda, gdje su prikazani svi proizvodi s nazivom i cijenom, iznad cijene istaknuti artikl ovog proizvoda. Kontaktirao sam programera teme, on kaže da ne znam varijablu. Kako...

prije 12 godina

Malo treba pripaziti:

Ako isključite RegisterGlobals i povezane, a zatim koristite get_defined_vars(), možda ćete vidjeti nešto poput sljedećeg:

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

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

)
?>

Primijetite da $_SERVER nije tamo. Čini se da php samo učitava superglobalni $_SERVER ako se negdje koristi. Možete učiniti ovo:

ispis"

" .htmlspecialchars(print_r(get_defined_vars(), true)) ".
" ;
ispis"
" .htmlspecialchars (print_r ($_SERVER, istina)) ."
" ;
?>

I tada će se $_SERVER pojaviti na oba popisa. Pretpostavljam da "to nije problem, jer se ništa loše neće dogoditi u svakom slučaju, ali je ipak zanimljiva zanimljivost.

prije 6 godina

Budući da get_defined_vars() dobiva varijable samo u točki koju pozovete funkciju, postoji jednostavan način da dobijete varijable definirane unutar trenutnog opsega.

// Sam vrh vaše php skripte
$vars = get_defined_vars();

// Sada radi svoje stvari
$foo = "foo";
$bar = "bar";

// Dobiva sve varijable definirane u trenutnom opsegu
$vars = array_diff(get_defined_vars(), $vars);

jeka "

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

prije 15 godina

Ovdje je funkcija koja generira izvješće o otklanjanju pogrešaka za prikaz ili e-poštu
pomoću get_defined_vars. Izvrsno za dobivanje detaljne snimke bez
oslanjajući se na unos korisnika.

funkcija generateDebugReport ($method, $defined_vars, $email = "nedefinirano")(
// Funkcija za stvaranje izvješća o otklanjanju pogrešaka za prikaz ili e-poštom.
// Upotreba: generateDebugReport(method,get_defined_vars(),e-pošta);
// Gdje je metoda "preglednik" ili "e-pošta".

// Kreirajte popis zanemarivanja za ključeve koje vraća "get_defined_vars".
// Na primjer, HTTP_POST_VARS, HTTP_GET_VARS i drugi su
// redundantno (isto kao _POST, _GET)
// Također uključite vars koje želite zanemariti iz sigurnosnih razloga - tj. 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 = "Izvješće o otklanjanju pogrešaka kreirano $timestamp \n" ;

// Dobiva posljednju SQL pogrešku za dobru mjeru, gdje je $link identifikator resursa
// za mysql_connect. Komentirajte ili izmijenite za svoju bazu podataka ili postavke apstrakcije.
globalna $link ;
$sql_error = mysql_error($link);
if($sql_error)(
$message .= "\nMysql poruke:\n" . mysql_error($link);
}
// Kraj MySQL

// Ovdje se može koristiti rekurzivna funkcija. Shvaćate ideju ;-)
foreach($defined_vars kao $key => $val )(
if(is_array ($val) && ! in_array ($key, $ignorelist) && count ($val) > 0)(
$message .= "\n niz $ključeva (ključ=vrijednost):\n" ;
foreach($val kao $subkey => $subval )(
if(! in_array ($subkey, $ignorelist) && ! is_array ($subval))(
$message .= $potključ. "=" . $subval . "\n" ;
}
elseif(! in_array ($subkey, $ignorelist) && is_array ($subval))(
foreach($subval kao $subkey => $subval )(
if(! in_array ($subkey, $ignorelist))(
$message .= $subključ. "=" . $subval . "\n" ;
}
}
}
}
}
inače (!
is_array ($val ) && ! in_array ($key, $ignorelist) && $val)(
$message .= "\nVarijabla " . $ključ. "=" . $val. "\n" ;
}
}

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

$mresult = mail ($email , "Izvješće o otklanjanju pogrešaka za " . $_ENV [ "HOSTNAME" ]. "" , $message );
if($mresult == 1 )(
jeka "Izvješće o otklanjanju pogrešaka uspješno poslano.\n";
}
drugo(
jeka "Slanje izvješća o otklanjanju pogrešaka nije uspjelo.\n";
}
}
}
?>

prije 17 godina

Jednostavna rutina za pretvaranje get_defined_vars objekta u XML.

funkcija obj2xml ($v, $indent = "") (
dok (list($key, $val) = svaki ($v)) (
if ($key == "__attr" ) nastavi;
// Provjera __attr
if (is_object ($val -> __attr)) (
dok (list($key2, $val2) = svaki ($val -> __attr)) (
$attr .= " $key2 =\" $val2 \"" ;
}
}
else $attr = "" ;
if (is_array ($val) || is_object ($val)) (
print(" $indent< $key$attr >\n");
obj2xml ($val, $indent. "");
print(" $indent\n");
}
else print(" $indent< $key$attr >$val\n");
}
}

//Primjer objekta
$x -> ime -> first = "Ivan" ;
$x -> ime -> last = "Smith" ;
$x -> arr [ "Voće" ] = "Banana" ;
$x -> arr [ "Veg" ] = "Mrkva" ;
$y -> kupac = $x;
$y -> kupac -> __attr -> id = "176C4" ;

$z = get_defined_vars();
obj2xml($z["y"]);
?>
će ispisati:


Ivan
Smith


Banana
mrkva

prije 10 godina

Kao napomena, get_defined_vars() ne vraća skup referenci varijabli (kao što sam se nadao). Na primjer:

// definiraj varijablu
$my_var = "foo" ;

// dobivamo naš popis definiranih varijabli
$defined_vars = get_defined_vars();

// sada pokušajte promijeniti vrijednost kroz vraćeni niz
$defined_vars [ "my_var" ] = "bar";

echo $my_var , "\n" ;

?>

će ispisati "foo" (izvorna vrijednost). "Bilo bi lijepo kada bi get_defined_vars() imao neobavezni argument za njihovo referenciranje, ali mislim da je to prilično specijaliziran zahtjev. Možete to učiniti sami (manje povoljno) s nečim poput:

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

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

?>

prije 1 godine

Već sam ovdje objavio o tome da je "ovo" u get_defined_vars.

Ispostavilo se da nije uvijek tu, ali će se u određenim slučajevima neobjašnjivo pojaviti.

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

niz()
niz ("ovo")

To se ne događa u PHP-u 7.2, ali će se dogoditi u PHP-u 5.6.

prije 1 godine

Neki ovdje komentari ističu da ova funkcija neće vraćati reference. Međutim, vraća imena, a imena su "reference".

Ne bih preporučio ovdje prijedloge koji to pretvaraju u reference.

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

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

Umjesto $() možete koristiti i $$.

Napravio sam neke lude stvari u svoje vrijeme kako bih napravio iznimno generički kod, ali nikad nisam morao učiniti ništa slično gore navedenom. Možda neće ni raditi (ali bi trebao jer se ne razlikuje od $a[$key]).

Mogli biste također napraviti $$key++, ali nikad nisam vidio takav kod koji nije bio strašno loš (koristeći dinamiku gdje dinamika nije korisna).

Ako radite tako nešto, dodatno ga proučite.

Varijable okruženja (okolina) u sustavu Windows sadrže različite informacije o postavkama sustava i korisničkom okruženju. Razlikuju se varijable okoline korisnika, sustava i procesa.

Najlakši način za pregled sadržaja varijabli okruženja u sustavu Windows je otvaranje svojstava sustava ( sysdm.cpl) -> Napredno -> Varijable okruženja. Kao što vidite, u otvorenom odjeljku postoje dva odjeljka: gornji sadrži varijable korisničkog okruženja, a donji sadrži varijable sustava.

Osim toga, varijable okruženja pohranjene su u registru sustava. Korisničke varijable pohranjene su u . Sustavno - u HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.

Možete prikazati vrijednosti svih varijabli okruženja u naredbenom retku sustava Windows. Naredba je jednostavna:

Naredba će prikazati varijable okruženja i njihove vrijednosti.

U PowerShell-u, za prikaz svih varijabli okruženja, možete koristiti naredbu:

Ako želite prikazati vrijednost samo jedne varijable, trebate koristiti naredbu echo, a naziv varijable mora biti zatvoren u znakovima postotka. Na primjer,

echo %systemroot%

set > c:\tmp\env_var.txt

Varijable okoline određenog procesa mogu se dobiti korištenjem besplatnog Uslužni programi Process Explorer(iz Sysinternalsa). Samo otvorite svojstva procesa i idite na karticu Okoliš.

Ova se lekcija usredotočuje na opseg PHP varijabli. Objašnjava razliku između lokalnog i globalnog opsega, pokazuje kako pristupiti globalnim varijablama unutar funkcije, kako raditi sa superglobalima i stvarati statičke varijable.

Kada počnete učiti PHP i počnete raditi s funkcijama i objektima, opseg varijabli je malo zbunjujući. Na sreću PHP-ova pravila u tom pogledu su vrlo laka za razumjeti (u usporedbi s drugim programskim jezicima).

Što je opseg?

Opseg varijable je kontekst unutar kojeg je varijabla definirana i gdje joj se može pristupiti. PHP ima dva varijabilna opsega:

  • Globalno- varijablama se može pristupiti bilo gdje u skripti
  • Lokalni- varijablama se može pristupiti samo unutar funkcije u kojoj su definirane

Varijabilni opseg, a posebno lokalni opseg, uvelike pojednostavljuje upravljanje kodom. Kad bi sve varijable bile globalne, mogle bi se promijeniti bilo gdje u skripti. To bi dovelo do kaosa i velikih skripti, jer vrlo često različiti dijelovi skripte koriste varijable s istim imenom. Ograničavajući opseg na lokalni kontekst, definirate granice koda koji može pristupiti varijabli, čineći kod robusnijim, modularnijim i lakšim za otklanjanje pogrešaka.

Varijable s globalnim opsegom nazivaju se globalne varijable, a one s lokalnim opsegom nazivaju se lokalne varijable.

Evo primjera kako funkcioniraju globalne i lokalne varijable.

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

Bok Harry! $globalName vrijednost: "Zoya" $localName vrijednost: ""

U ovoj skripti napravili smo dvije varijable:

  • $globalName- to globalno varijabla
  • $localName- to lokalni varijabla koja se kreira unutar funkcije sayHello().

Nakon što se kreiraju varijabla i funkcija, skripta poziva sayHello() , što ispisuje "Bok Harry!" . Skripta zatim pokušava ispisati vrijednosti dviju varijabli koristeći echo funkciju. Evo što se događa:

  • Jer $globalName je stvorena izvan funkcije, dostupna je bilo gdje u skripti, pa se prikazuje "Zoya".
  • $localName bit će dostupno samo unutar funkcije sayHello(). Budući da je izraz echo izvan funkcije, PHP ne dopušta pristup lokalnoj varijabli. Umjesto toga, PHP pretpostavlja da će kod stvoriti novu varijablu pod nazivom $localName, koja će prema zadanim postavkama biti prazan niz. zato drugi poziv echo-a daje vrijednost "" za varijablu $localName.

Pristup globalnim varijablama unutar funkcije

Za pristup globalnoj varijabli izvan funkcije samo napiši njeno ime. Ali za pristup globalnoj varijabli unutar funkcije, prvo morate deklarirati varijablu kao globalnu u funkciji koristeći globalnu ključnu riječ:

Funkcija myFunction() (globalna $globalVariable; // Pristup globalnoj varijabli $globalVariable)

Ako to ne učinite, onda PHP pretpostavlja da stvarate ili koristite lokalnu varijablu.

Evo primjera skripte koja koristi globalnu varijablu unutar funkcije:

"; globalno $globalName; echo "Pozdrav $globalName!
"; ) reciHello(); ?>

Kada se izvrši, skripta će ispisati:

Bok Harry! Pozdrav Zoya!

Funkcija sayHello() koristi ključnu riječ global da proglasi varijablu $globalName globalnom. Zatim može pristupiti varijabli i ispisati njezinu vrijednost ("Zoya").

Što su superglobali?

PHP ima poseban skup unaprijed definiranih globalnih nizova koji sadrže različite informacije. Takvi se nizovi nazivaju superglobali, budući da im se može pristupiti s bilo kojeg mjesta u skripti, uključujući interni prostor funkcije i ne moraju se definirati pomoću globalne ključne riječi.

Ovdje je popis superglobala dostupnih u PHP verziji 5.3:

  • $GLOBALS - popis svih globalnih varijabli u skripti (osim superglobalnih)
  • $_GET - sadrži popis svih polja obrasca koje je preglednik poslao s GET zahtjevom
  • $_POST - sadrži popis svih polja obrasca koje je preglednik poslao pomoću POST zahtjeva
  • $_COOKIE - sadrži popis svih kolačića koje šalje preglednik
  • $_REQUEST - sadrži sve kombinacije ključ/vrijednost sadržane u nizovima $_GET, $_POST, $_COOKIE
  • $_FILES - sadrži popis svih datoteka koje je preuzeo preglednik
  • $_SESSION - omogućuje vam pohranjivanje i korištenje varijabli sesije za trenutni preglednik
  • $_SERVER - sadrži informacije o poslužitelju, kao što je naziv datoteke skripte koja se izvršava i IP adresa preglednika.
  • $_ENV - Sadrži popis varijabli okruženja proslijeđenih PHP-u, kao što su CGI varijable.
Na primjer, možete koristiti $_GET da biste dobili vrijednosti varijabli sadržanih u URL-u niza zahtjeva skripte i prikazali ih na stranici:

Ako pokrenete gornju skriptu s URL-om http://www.example.com/script.php?yourName=Fred, ispisat će:

Hej Fred!

Upozorenje! U stvarnoj skripti, ovaj prijenos podataka se nikada ne bi trebao koristiti zbog slabe sigurnosti. Uvijek biste trebali provjeriti ili filtrirati podatke.

$GLOBALS superglobal je vrlo zgodan za korištenje, jer vam omogućuje organiziranje pristupa globalnim varijablama u funkciji bez potrebe za korištenjem globalne ključne riječi. Na primjer:

"; ) sayHello(); // Prikazuje "Hello Zoya!" ?>

Statičke varijable: one su negdje u blizini

Kada kreirate lokalnu varijablu unutar funkcije, ona postoji samo dok je funkcija pokrenuta. Kada se funkcija završi, lokalna varijabla nestaje. Kada se funkcija ponovno pozove, kreira se nova lokalna varijabla.

U većini slučajeva ovo funkcionira izvrsno. Dakle, funkcije su samodostatne i uvijek rade na isti način svaki put kada se pozovu.

Međutim, postoje situacije u kojima bi bilo prikladno stvoriti lokalnu varijablu koja "pamti" svoju vrijednost između poziva funkcije. Takva varijabla naziva se statična.

Da biste stvorili statičku varijablu u funkciji, morate koristiti ključnu riječ static ispred naziva varijable i svakako joj dati početnu vrijednost. Na primjer:

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

Razmotrimo situaciju u kojoj je prikladno koristiti statičku varijablu. Recimo da kreirate funkciju koja, kada se pozove, stvara widget i ispisuje broj već stvorenih widgeta. Možete pokušati napisati ovakav kod koristeći lokalnu varijablu:


"; echo createWidget() . " smo već kreirali.
"; echo createWidget() . " već smo kreirali.>
"; ?>

No, budući da se varijabla $numWidgets kreira svaki put kada se funkcija pozove, dobivamo sljedeći rezultat:

Kreiramo neke widgete... 1 smo već kreirali. 1 smo već stvorili. 1 smo već stvorili.

Ali korištenjem statičke varijable možemo zadržati vrijednost od jednog poziva funkcije do sljedećeg:

"; echo createWidget() . " smo već kreirali.
"; echo createWidget() . " smo već kreirali.
"; echo createWidget() . " >već smo kreirali.
"; ?>

Sada će skripta proizvesti očekivani rezultat:

Kreiramo neke widgete... 1 smo već kreirali. 2 smo već stvorili. 3 smo već stvorili.

Iako statička varijabla zadržava svoju vrijednost između poziva funkcije, ona je važeća samo dok je skripta pokrenuta. Nakon što skripta završi svoje izvođenje, sve statičke varijable se uništavaju, kao i lokalne i globalne varijable.

To je sve! Često pogledajte PHP dokumentaciju.