Aktywne Wpisy
![fsfdjf](https://wykop.pl/cdn/c3397992/fsfdjf_JlwigrmzHB,q60.jpg)
fsfdjf +89
to mój psiur
![fsfdjf - to mój psiur](https://wykop.pl/cdn/c3201142/8abbfb3787a0326c30a3a102a4a7b1590f901adae8cc3b0a7c763e1f7df70c80,w150.jpg)
źródło: Zdjęcie z biblioteki
Pobierz![Mr_Beniz](https://wykop.pl/cdn/c3397992/Mr_Beniz_I4atJoEFki,q60.jpg)
Mr_Beniz +17
#przegryw Chłop już padnięty dzisiaj
![Mr_Beniz - #przegryw Chłop już padnięty dzisiaj](https://wykop.pl/cdn/c3201142/f54f307acd3a225681b641bae1df1426c4a4b200dd8cea7a94046fec721612e1,w150.jpg)
źródło: temp_file6078670222780462264
PobierzSkopiuj link
Skopiuj linkźródło: Zdjęcie z biblioteki
Pobierzźródło: temp_file6078670222780462264
PobierzWykop.pl
#php #php7
// public function nazwa(?Entity $entity);
// vs
// public function nazwa($entity = null);
missing argument
Pierwsze to określenie typu parametru wymaganego. Może być Entity lub null.
Drugie to parametr opcjonalny, bo ma wartość domyślną.
public function nazwa(Entity $entity = null);
w takim zapisie nie widzę różnicy pomiędzy obiema wersjami.
tj: rozumiem, że w przypadku pierwszego zapisu jak nie przekaże NULL'a to wyrzuci missing argument - spoko, ale jaki jest sens tego zapisu, tworzenia tego operatora "?" dla argumentów skoro można dać domyślnie = null
@stosiedem
:>
#php71 jak już
To że możesz precyzyjniej określać typy argumentów. W drugim przypadku przyjmie wszystko, w pierwszym tylko null lub instancję Entity. Łatwiej kontrolować w ten sposób flow I/O.
Dziś złapałem się na tym że oczekiwałem stringa, a dostawałem obiekt. Z tego co kojarzę jest jeszcze | dla rozdzielania typów wyjątków, ale to chyba php7.2.
@malypirat: nie wymusza to od programisty żeby wszędzie dawał domyślną wartość. Wolałbyś pisać po trzy-cztery nulle w klasach rozszerzających?
@stosiedem wskazał dobre źródło. Plusuj. Plusuj go, mówię!
Po pierwsze taki, że zrobienie
= null
powoduje, że argument jest opcjonalny, a możesz tego nie chcieć w ten sposób wyrażać.Po drugie, wartość domyślna może być inna niż null, a możesz wciąż dopuścić przekazanie nulla:
public function foo(?int $num = 1);