0Pricing
PHP Academy · Lekcja

Zakres zmiennych: lokalny i globalny

Poznanie izolowania zakresu funkcji w PHP oraz używania słowa kluczowego global.

Zakres zmiennych: lokalny i globalny to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

Zakres zmiennych w PHP

W PHP każda zmienna ma zakres — obszar kodu, w którym jest dostępna.

  • Zmienne utworzone poza funkcjami znajdują się w zakresie globalnym
  • Zmienne utworzone wewnątrz funkcji znajdują się w zakresie lokalnym
  • PHP NIE ma zakresu blokowego, w przeciwieństwie do C lub JavaScript

Zakres lokalny

Zmienne wewnątrz funkcji są lokalne — przestają istnieć po zakończeniu działania funkcji:

<?php
function compute(): void {
    $result = 42;  // local variable
    echo $result;  // 42
}

compute();
echo $result ?? 'undefined';  // undefined — $result is gone

Zmienne globalne NIE są widoczne automatycznie

W przeciwieństwie do wielu języków funkcje PHP nie widzą domyślnie zmiennych globalnych — trzeba je jawnie zaimportować:

<?php
$message = 'Hello';

function printMessage(): void {
    echo $message ?? 'not visible';  // 'not visible'
    // $message from global scope is not accessible here
}

Słowo kluczowe global

Użyj global $varName wewnątrz funkcji, aby uzyskać dostęp do zmiennej globalnej:

<?php
$counter = 0;

function increment(): void {
    global $counter;
    $counter++;
}

increment();
increment();
echo $counter;  // 2

Superglobalna zmienna $GLOBALS

$GLOBALS to tablica zawierająca wszystkie zmienne globalne — dostępna w dowolnym miejscu bez użycia słowa kluczowego global:

<?php
$total = 100;

function addTax(): void {
    $GLOBALS['total'] *= 1.18;  // 18% tax
}

addTax();
echo $total;  // 118

Dlaczego unikać global

Nadmierne używanie global tworzy ukryte zależności — funkcje stają się trudne do testowania i debugowania. Lepiej przekazywać wartości jako argumenty:

<?php
// Bad
$db = new PDO(/* ... */);
function getUsers(): array {
    global $db;
    return $db->query('SELECT * FROM users')->fetchAll();
}

// Good
function getUsers(PDO $db): array {
    return $db->query('SELECT * FROM users')->fetchAll();
}

Zmienne statyczne

Zmienna static zachowuje swoją wartość między wywołaniami funkcji, ale nadal pozostaje lokalna dla tej funkcji:

<?php
function callCount(): int {
    static $count = 0;
    return ++$count;
}

echo callCount();  // 1
echo callCount();  // 2
echo callCount();  // 3

Domknięcia i przechwytywanie zmiennych

Domknięcia (funkcje anonimowe) mogą przechwytywać zmienne z zewnętrznego zakresu za pomocą use:

<?php
$prefix = 'Mr';

$greet = function(string $name) use ($prefix): string {
    return "$prefix. $name";
};

echo $greet('Smith');  // Mr. Smith

Przechwytywanie przez referencję

Przechwytuj przez referencję za pomocą use (&$var), aby domknięcie mogło modyfikować zmienną zewnętrzną:

<?php
$total = 0;

$add = function(int $n) use (&$total): void {
    $total += $n;
};

$add(10);
$add(5);
echo $total;  // 15

Funkcje strzałkowe

Funkcje strzałkowe PHP 7.4 (fn =>) automatycznie przechwytują zewnętrzny zakres przez wartość — nie wymagają use:

<?php
$multiplier = 3;
$nums = [1, 2, 3, 4];

$result = array_map(fn($n) => $n * $multiplier, $nums);

print_r($result);  // [3, 6, 9, 12]

Funkcje zagnieżdżone

PHP pozwala definiować funkcję wewnątrz innej funkcji, ale funkcja wewnętrzna staje się globalnie dostępna po wywołaniu funkcji zewnętrznej:

<?php
function outer(): void {
    function inner(): void {
        echo 'inner called';
    }
}

// inner(); // Fatal: undefined before outer() is called
outer();
inner(); // works now

Szybki test

Co robi zmienna static wewnątrz funkcji PHP?

Podsumowanie: zakres zmiennych

Najważniejsze zasady dotyczące zakresów w PHP:

  • Funkcje mają własny zakres lokalny
  • Zmienne globalne trzeba zaimportować za pomocą global
  • Alternatywnie można użyć $GLOBALS['name']
  • Zmienne static zachowują wartości między wywołaniami w obrębie funkcji
  • Domknięcia przechwytują zmienne zewnętrzne za pomocą use
  • Funkcje strzałkowe automatycznie przechwytują zmienne przez wartość

Często zadawane pytania

Czy lekcja „Zakres zmiennych: lokalny i globalny” jest bezpłatna?

Tak — pełny tekst „Zakres zmiennych: lokalny i globalny” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zakres zmiennych: lokalny i globalny”?

Poznanie izolowania zakresu funkcji w PHP oraz używania słowa kluczowego global. Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Zakres zmiennych: lokalny i globalny”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Definiowanie i wywoływanie funkcji
  2. Parametry domyślne i wariadyczne
  3. Zakres zmiennych: lokalny i globalny
  4. Funkcje anonimowe i domknięcia
← Powrót do PHP Academy