🌄 Wprowadzenie
Tak może tajemniczo, a może swojsko? Porozmawiajmy poważnie o niczym i ja wiem, że to absurdalnie brzmi, no bo to nic, null. Co można powiedzieć o czymś co jest niczym?
W wielu językach programowaniach, a także w naszym PHP istnieje coś typu null i coś też może być nullable. No dobra, ale na co nam nic? No się okazuje że czasem jest potrzeba opisania czegoś jako nic. Prosty przykład: mamy pudełko czyli jakiś konkretny obiekt i może mieć coś w środku, ale może być puste.
Obrazowo mogę jeszcze przedstawić przykład z papierem toaletowym:
Jak to się okazuje niby takie nic, a jednak coś znaczy 😄
Aaa.. i jeszcze jedno. Bardziej niczym niż null jest undefined, bo null jest defined. No to tylko tak w ramach napomnienia, bo to ma być o null a nie o undefined 😉
⚪ Czym jest null?
Null jest typem jednostki. Oznacza to nie mniej nie więcej, że może mieć tylko i wyłącznie jedną wartość, którą w tym przypadku jest null
. No taki akurat fart, że wartość i typ są takie same 😜
Aby utworzyć zmienną z typem null wystarczy do niej przypisać wartość:
No i co? To już? Mamy już to.. znaczy nic?.. No nie do końca. Teraz pasuje mi omówić kilka zagadnień powiązanych z nullem.
❓ Jak sprawdzić null?
Dobrze że pytasz! 😁 Zanim zaczniemy, zróbmy sobie obiekt, który będzie przyjmował nullable, a dokładnie typ uni null|string
– czyli wartości jakie takie zmienna może przyjąć to null albo ciąg znaków:
📗 Podstawy
Oczywiście domyślną wartością będzie null. Jak widać w przykładzie, wyświetlenie null nic nie daje więc jest ok. Przecież null to nic 😉
Zobacz jeszcze, że zapis ?string
jest równoznaczny z zapisem null|string
. Zapis z pytajnikiem jest bardziej uniwersalny, bo i też kompatybilny od wersji PHP 7.4 w górę.
Dobra, ale co teraz? No może my nie chcemy wyświetlać null i się zastanawiać czy tam jest czy nie? Skąd kto widzi wynik ma wierzyć na słowo że tam jest null, a nie pusty ciąg znaków? Hę? 🥸
No faktycznie i aby mieć pewność można sprawdzić „nullowalność” na kilka sposób:
Ale momento, jak to pusty napis to też null? O co biega? A no, bo null w PHP jest uważany za wartość falsy. W skrótowo to znaczy że null i false to to samo przy samym porównaniu wartości. Tak samo ma pusty string. To dokładnie omówię przy type boolean. Natomiast przygotowałem proste porównanie, aby wiedzieć na co uważać 😁
Zatem jeśli zależy ci na sprawdzeniu czy coś jest null i tylko null w typie i wartości to skorzystaj, albo potrójnego znaku = (czyli ===) aby sprawdzić wartość oraz typ lub użyj funkcji is_null. Wtedy będziesz mieć gwarant! ✔️
🧷 Nullsafe operator
Czasem bywa tak w programowaniu, że część własności obiektów jedno za drugie jest nullable. Kiedyś trzeba było to sprawdzać z osobno, każde jedno pod drugim tworząc „ifowe drzewko”.
Dzięki magicznemu znaku ?
od wersji PHP 8.0 takie drzewka z ifem w roli głównej stały się zbędne.
🎾 Null Coalescing Operator
Ten operator można traktować jako skrót funkcji isset, która sprawdza czy dana zmienna nie jest nullem. Operator ten to dwa znaki pytajnika czyli ??
. Jeżeli lewa strona operatora jest równa null to wynikiem operacji będzie prawa strona, w przeciwnym wypadku wynikiem będzie lewa strona.
Jak widać, jeśli pierwsza wartość to null wtedy używana jest ta druga za znakami ??
📝 Podsumowanie
To póki co tyle co mogę powiedzieć o niczym 😆 Jeśli jesteś zaawansowanym programistą i chcesz poznać dodatkowe zastosowania typu null to najlepiej jest się pouczyć wzorców projektowych i pozostałych zasad programowania