W PHP jak w każdym języku programowania dane mają swoje typy. W tym artykule przedstawiam je i opisuję.
W PHP jak w każdym języku programowania dane mają swoje typy. W tym artykule przedstawiam je i opisuję.
W PHP standardowo jest osiem typów danych. Jeden logiczny, dwa liczbowe (numeryczne), jeden przechowujący łańcuchy znaków, dwa złożone (które mogą “zawierać” inne typy), oraz dwa specjalne. W PHP nie określa się jawnie typów danych, php sam potrafi to zrobić, co znacznie ułatwia pracę. PHP potrafi również sam konwertować typy wykorzystywanych danych na aktualnie potrzebne.
Typy danych:
– Logiczne:
– boolowskie (boolean, bool)
– Liczbowe
– całkowite (int, integer)
– zmiennoprzecinkowe (float, real, double)
– Łańcuch znaków
– łańcuch znaków (string)
– złożone
– tablice (array)
– obiekty (object)
– specjalne
– identyfikator zasobów (resource)
– Null (null)
Możesz się również spotkać z pseudo-typem “mixed”, oznacza on po prostu że mogą być użyte dane różnego typu (a nie kilku naraz).
Boolowskie:
Myślę że każdy kto pamięta ze szkoły logikę już wie o co chodzi, a dla innych powiem po prostu że jest to typ przechowujący jedną z dwóch wartości: “prawda”(true), lub “fałsz” (false). Ten typ jest używany do budowania warunków logicznych dla instrukcji warunkowych(if), pętli(while) itp. W php są odpowiedniki wartości boolowskich w innych typach, np. pusty ciąg znaków, zero, pusta tablica i pusty obiekt oznaczają false, analogicznie ciąg znaków zawierający jakąś wartość lub liczba różna od zera itp. itd. oznaczają true. Słowa true i false są tzw. słowami zarezerwowanymi(reserved word). Przy przypisywaniu wartości boolowskiej do zmiennej nie używaj nawiasów, cudzysłowów ani apostrofów. Wielkość liter w wypadku true i false nie ma znaczenia. Przykładowo inicjalizacja typu boolowskiego wygląda tak:
$zmienna = true |
Liczby całkowite:
Liczby tego typu mogą przyjmować dodatnie lub ujemne wartości całkowite oraz zero. Mogą być zapisane w notacji szesnastkowej i ósemkowej, oraz oczywiście dziesiętnej. Typ ten ma ograniczenia co do wielkości w zależności od platformy na jakiej działa PHP, ale w wypadku wyjścia poza zakres PHP automatycznie konwertuje do typu float i nie ma problemu. Przy przypisywaniu liczby całkowitej nie trzeba używać ani apostrofów ani cudzysłowów, chodź nie jest to zabronione, gdyż PHP jak już wspomniałem w razie potrzeby radzi sobie z konwersją. Przykładowa inicjalizacja liczby całkowitej wygląda następująco:
$zmienna = 10; |
Liczby zmiennoprzecinkowe:
Jeśli chodzi o ograniczenia to rzecz ma się podobnie jak przy liczbach całkowitych, zależna jest ona od platformy na której operuje PHP. Należy pamiętać że do zapisu ułamków dziesiętnych w PHP używamy kropki “.”. Uwaga, należy pamiętać, o czym przestrzegają również twórcy PHP że liczby zmiennoprzecinkowe nie są tak dokładne jak można się tego spodziewać. Tłumaczone jest to tym że niektóre ułamki nie posiadają swojego rozwinięcia dziesiętnego. W manualu PHP zaleca się aby korzystać z biblioteki ‘BCMath’ lub funkcji ‘gmp’, więc jeżeli potrzebna jest ci precyzja to powinieneś się zastosować do zaleceń twórców. Przykładowa liczba zmienno przecinkowa wygląda tak:
$zmienna = 10.647 |
Łańcuch znaków:
Są trzy sposoby zapisywania łańcuchów znaków:
– apostrofy
– cudzysłowy
– heredoc
Gdy zapisujemy łańcuch znaków pomiędzy apostrofami(pojedyncze cudzysłowy) zmienne nie są interpretowane. To co znajduje się pomiędzy apostrofami jest brane “dosłownie”, tzn. że nawet znaki specjalne będą wypisywane dokładnie tak jak brzmią. Aby zapisać apostrof wewnątrz takiego łańcucha należy go poprzedzić znakiem odwrotnego ukośnika “\”. Przykład:
$zmienna = ‘jakiś tekst i nie interpretowana zmienna $innaZmienna’; |
Łańcuchy znaków znajdujące się pomiędzy cudzysłowami nie są brane dosłownie. To znaczy że i zmienne i znaki specjalne będą interpretowane, aby temu zapobiec trzeba korzystać ze znaku odwrotnego ukośnika “\”. Przykład:
$zmienna = “jakiś tekst i interpretowana zmienna $innaZmienna”; |
Składnia heredoc pozwala na zapisanie kilku wierszy tekstu. Rozpoczyna się go znakami “<<<” oraz identyfikatorem i kończy takim samym identyfikatorem. W linii z identyfikatorem zamykającym nie może być innych znaków oprócz średnika (;). Wewnątrz takiego łańcucha znaków nie można używać znaku specjalnego “powrót karetki”(\r), można używać tylko znaków nowego wiersza. Przykład:
$zmienna = <<<Identyfikator Jakiś ciekawy tekst który zawiera zmienne $jakasZmienna które zostaną zinterpretowane Identyfikator; |
Tablice:
Tutaj nie będę dużo pisał, gdyż jest o tym osobny artykuł. Należy wiedzieć że tablica jest uporządkowaną “mapą” która wartościom przyporządkowuje klucze. Tablice można zapisywać do tablic przez co można tworzyć tablice wielowymiarowe bez ograniczeń. Tablice mogą w kluczach zawierać zarówno liczby jak i łańcuchy znaków, którymi będą indeksowane. Tworzymy je za pomocą polecenia array(). Przykład:
$zmienna = array(“klucz” => “wartosc”, “sama wartość”, 1 => “inna wartość”, “array(“a”,”b”)) |
Obiekty:
Obiekty to bardzo obszerny rozdział który również został omówiony w osobnym artykule. Należy pamiętać że obiekty są egzemplarzami klas, które definiuje się za pomocą słowa kluczowego class. Obiekty tworzy się za pomocą słowa kluczowego new. Przykładowy obiekt:
<?php class klasa { var $wlasciwosc; function metoda() { return 1; } } $obiekt = new klasa; ?> |
Identyfikator zasobów:
Identyfikator zasobów to zmienna która posiada odwołanie do zewnętrznego źródła danych. W zależności od tego źródła takie identyfikatory są tworzone przez różne funkcje. Takie identyfikatory po utworzeniu i wykorzystaniu można zwalniać, prócz połączeń stałych. Przykładowymi identyfikatorami zasobów mogą był identyfikatory połączenia z bazą danych lub z plikami. Przykład:
$zmienna = fopen(‘jakisplik.txt’, ‘w’); |
NULL:
Jest to specjalny typ który może posiadać jedną wartość: NULL. Wielkość liter w tym wypadku nie ma znaczenia. Zapisujemy ją bez cudzysłowów. Wartość ta oznacza dokładnie to że zmienna nie ma wartości. Brzmi to trochę śmiesznie ale tak jest. W przypadku gdy aktualna zmienna ma nie posiadać wartości nie zapisujemy do nie zera ani pustego łańcucha znaków tylko NULL, nie jest to jakiś wymóg ale tak się po prostu robi. Przykład:
$zmienna = NULL; |
To tyle jeśli chodzi o typy danych. Należy z nich korzystać tak jak powinno się to robić, a nie tak jak jest wygodniej.