Zmienne i Stałe w PHP
Spis treści
- Zmienne
- Typy Zmiennych
- Tablice
- Zakres Zmiennych
- Zmienne Predefiniowane
- Zmienne zmienne
- Type Casting
- Stałe
- Stałe Magiczne
- 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
globaloraz$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;
- W kodzie:
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)