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
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;
- 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)