Zmienne i Stałe w PHP

Poziom: Początkujący
Część: 04

Spis treści

  1. Zmienne
  2. Typy Zmiennych
  3. Tablice
  4. Zakres Zmiennych
  5. Zmienne Predefiniowane
  6. Zmienne zmienne
  7. Type Casting
  8. Stałe
  9. Stałe Magiczne
  10. Literały

Zmienne

  • Zmienna konstrukcja programistyczna posiadająca trzy podstawowe atrybuty:
    • symboliczną nazwę
    • miejsce przechowywania (rozmiar)
    • wartość
  • definicja zmiennej
    • rezerwuje i przydziela nazwę
    • określa typ
    • przydziela miejse w pamięci
    • określa atrybuty
  • podstawową własnością zmiennej jet to, że przechouje wartość która może być odczytywana i zmieniana

Typy Zmiennych

  • Skalarne
    • Logiczny (bool)
    • Liczby Całkowite (int)
    • Liczby Zmiennoprzecinkowe (float)
    • Ciąg Znaków (string)
  • Złożone
    • Tablice (array)
    • Obiekty (object)
    • Wykonywalne (callable)
  • Specjalne
    • Zasoby (resource)
    • null

Tablice

  • Tablice są tak naprawde uporządkowanymi mapami wartości
  • Przyporządkowuje wartości kluczą
    • Klucze mogą być różnego typu
    • Klucze mogą być różnych typów w jednej tablicy
    • Jeśli klucze są zdefiniowane mówimy o tablicy asocjacyjnej
    • Jeśli klucze nie są definiowane mówimy o tablicy indeksowanej
  • Wartościami tablicy
    • Mogą być dowolne typy, również inne tablice…
    • Elementy tablicy nie muszą być tego samego typu
  • Każda komórka tablicy posiada unikalny indeks (klucz) który może składać się z kluczy kilku wymiarów
  • Tablice wielowymiarowe czyli tablice złożone z innych tablic, wartościami ich komórek są inne tablice.
  • Jest przystosowana do używania jako kilka różnych typów:
    • tablica
    • wektor (lista)
    • słownik
    • kolekcja
    • stos
    • kolejka
  • PHP posiada bardzo duży zbiór funkcji do przeprowadzających operacje na tablicach
    • sortowanie
    • pobieranie wartości i przesuwanie wskaźnika
    • konwersja do innych formatów (JSON, serializacja)
  • Tablica może być zdefiniowana jako wymagany typ parametru przekazywanego przez funkcję

Zakres Zmiennych

  • Zakres zmiennych definiuje nam w w jakim zakresie, jak bardzo rozlegle w kodzie, dana zmienna będzie widoczna (dostępna)
  • Zmienna zdefiniowana w skrypcie ograniczona jest do tego kodu jak również skryptów do niego zaimportowanych (po definicji)
  • Zmienne zdefiniowane w funkcjach i metodach ograniczają swój zasięg tylko do tych funkcji (metod)
  • Zmienne globalne global oraz $GLOBALS
  • Zmienne statyczne static

Zmienne Predefiniowane

  • Superglobals — zmienne wbudowane dostępne w każdym zakresie:
    • $GLOBALS — tablica z referencjami do wszystkich zmiennych dostępnych w globalnym zakresie
    • $_SERVER — tablica ze zmiennymi serwera
    • $_GET — tablica ze zmiennymi GET
    • $_POST — tablica ze zmiennymi POST
    • $_FILES — tablica z plikami przesłanymi poprzez HTTP
    • $_REQUEST — tablica zmiennych rządania HTTP ($_GET + $_POST + $_COOKIE)
    • $_SESSION — tablica zmiennych sesji
    • $_ENV — tablica zmiennych środowiska
    • $_COOKIE — tablica ciasteczek, HTTP Cookies
  • $php_errormsg — ostatni błąd wykonania skryptu
  • $http_response_header — tablica nagłówków odpowiedzi HTTP
  • $argc - liczba argumentów przekazna do skryptu
  • $argv — tablica argumentów przekazanych do skryptu

Zmienne zmienne

  • Zmienne mogą być definiowane w trakcie wykonywania skryptu
  • Możliwe jest dynamiczne tworzenie zemiennych ${'prefix' . $klucz}
  • Zdecydowanie przydatne w przypadku obiektów stdClass (generalnie zmiennych publicznych) w obiektach uwtworzonych na podstawie danych zewnętrznych (zmienna struktura)

Type Casting

  • Jawna zmiana typu zmiennej wraz z rzutowaniem wartości na nowy typ
  • W PHP występuje też niejawna zmiana typu
  • (int), (integer) - konwersja do typu liczb całkowitych
  • (bool), (boolean) - konwersja do typu logicznego
  • (float), (double), (real) - konwersja do typu zmiennoprzecinkowego
  • (string) - konwersja do typu znakowego
  • (array) - konwersja do typu tablicowego
  • (object) - konwersja do typu obiektowego
  • (unset) - konwersja do typu null
  • (binary) - konwersja do typu binarnego

Stałe

  • Identyfikator któremy przypisana jest wartość
  • Po zdefiniowaniu wartość nie może być zmieniana
  • Pozwala lepiej zdefiniować koncepty używane przez programistów w danym kodzie
  • Powinnna być stosowana zamiast literału jeśli dana wartość wyraża jakiś koncept (eliminuje magiczne liczby)
  • Definicja:
    • W kodzie: define("FOO", "something");
    • W klasie: const MIN_VALUE = 0.0;

Stałe Magiczne

Techniczne metadane kodu, pomocne przy diagonowaniu problemów

  • __LINE__ - aktualna linia kodu w pliku
  • __FILE__ - pełna ścieżka do aktualnego pliku
  • __DIR__ - katalog w którym znajduje się aktualny plik
  • __FUNCTION__ - nazwa aktualnej funkcji
  • __CLASS__ - nazwa aktualnej klasy
  • __TRAIT__ - nazwa aktualnej cechy (trait)
  • __METHOD__ - aktualna metoda w klasie
  • __NAMESPACE__ - aktualna przestrzeń nazw

Literały

  • Literał to fragment kodu reprezentujący wartość
  • przykłady:
    $x = 5; // 5 jest literałem
    $y = "tekst"; // "tekst" jest literałem
    $z = time() / 2; // literałem jest tu tylko 2, ponieważ jest ustaloną wartością
    $z = time() / $x; // $x nie jest literałem, (posiada wartość, ale niekoniecznie musi ona być zawsze taka sama)