Niedawno przeglądałem część mojego kodu i zauważyłem, że w przypływie roztargnienia pozostawiłem strukturę podobną do następującej:
$guid = empty($subscription->guid) ? : $subscription->guid;
Teraz nie działało to tak, jak powinno i jest złe , ale ponieważ ta właściwość jest zawsze ustawiona teraz, działała dobrze i nie ma błędu składniowego od 5.3 z powodu następującej zmiany :
Od wersji PHP 5.3 można pominąć środkową część operatora trójskładnikowego. Wyrażenie wyrażenie1: wyrażenie 3 zwraca wyrażenie 1, jeśli wyrażenie 1 ma wartość PRAWDA, a wyrażenie 3 w przeciwnym razie.
Nie wiedziałem o tej zmianie, a teraz jestem ciekawy, czy powinienem jej użyć, czy nie. To jest coś, co było bardzo brakuje w językach takich jak rubin, gdzie można zrobić np a = b || c
dostać albo b
czy c
zamiast „prawdziwego” logiczną. Jednak składnia, którą wybrali dla operatora trójskładnikowego, wydaje mi się nieco sprzeczna z intuicją. Czy powinienem używać tego w kodzie produkcyjnym? Zdecydowanie rzuciłem się, gdy zobaczyłem to przez przypadek.