[php7]Zamiana isset na null coalescence operator

0

Robię walidację formularza w php7 i wyczytałem w manualu, że isset już nie jest obsługiwany w php7 i null coalescence operator powinien być używany zamiast isset jednak za bardzo nie wiem jak go wykorzystać w takiej formie, w szczególności dla zagnieżdżonych if-ów. Kod w chwili obecnej, napisany zgodnie z klasycznym podejściem, prezentuje się następująco:

$login1 = (filter_input(INPUT_POST, 'login1', FILTER_VALIDATE_EMAIL));
$login2 = (filter_input(INPUT_POST, 'login2', FILTER_VALIDATE_EMAIL));
$password1 = (filter_input(INPUT_POST, 'password1', FILTER_VALIDATE_STRING));
$password2 = (filter_input(INPUT_POST, 'password2', FILTER_VALIDATE_STRING));

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($login1) && isset($login2) && isset($password1) && isset($password2)) {
        $register = new User();
        if (!$login1) {
            echo '<p>text no</p>';
        } elseif (strlen($password1)) && (strlen($password2)) < 8) {
            echo '<p>text no</p>';
        } elseif ($password1 != $password2) {
            echo '<p">text no</p>';
        } else {
            if ($register->register($login2, $password2)) {
                echo '<p>text yes</p>';
            } else {
                echo '<p>text no</p>';
            }
        }
    }
}

Jak tę siatkę if-ów zamienić na null coalescence operator?

0

http://php.net/manual/en/function.isset.php Jak byk jest napisane, że jest dostępne.

0

A na kiego grzyba Ci tam isset?? Przecież tam masz w najgorszym wypadku nulle, czyli falsy value, a nie undefined (nie znasz podstaw koercji).

PS
Słyszał o czymś takim jak DRY?
Aż mnie ciarki przeszły od tych ifów, przecież to wszystko możnaby zapisać chociażby tak:

$isValid = $_SERVER['REQUEST_METHOD'] === 'POST' &&
           $login1 && $login2 && $password1 && $password2 &&
           $password1 === $password2 && strlen($password1) >= 8;
           
echo $isValid ? 'ok' : 'not ok';

W powyższym przykładzie nie ma rejestracji bo powinna być ona wykonana OSOBNO, to nie jest część walidacji.

PPS
Oczywiście jak chcesz pokazać szczegółowy rodzaj błędu, to jedną zmienną tego nie załatwisz, no ale widać nie potrzebujesz tego.

PPPS
Nie piszę w pehapie jakby co, pewnie można to zrobić lepiej.

0

isset jest dalej dostępny.
coalesce operator ma zastępować isset W OKREŚLONYM PRZYPADKU UŻYCIA, a nie w każdym miejscu, gdzie jest użyte isset

więcej:
http://php.net/manual/en/migration70.new-features.php

1 użytkowników online, w tym zalogowanych: 0, gości: 1