Przejdź do treści głównej
INF.03Pytanie #1550 z 1558php-skladnia-i-struktury

Skrypt PHP zawiera wymuszenie ścisłego typowania danych. Co stanie się podczas próby uruchomienia tego kodu?

php
<?php
declare(strict_types=1);
function dodaj(int $a, int $b): int {
    return $a + $b;
}
echo dodaj(2.5, 3.5);
?>
Opcje odpowiedzi:
A
Skrypt wyświetli liczbę 6 po uprzednim zaokrągleniu argumentów zmiennoprzecinkowych
B
Zostanie zgłoszony błąd krytyczny typu TypeError z powodu niezgodności typów przekazanych argumentów
Prawidłowa
C
Skrypt wyświetli liczbę 5, ignorując części ułamkowe
D
Zostanie wyświetlony błąd składni z powodu niepoprawnej deklaracji funkcji
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B (Zostanie zgłoszony błąd krytyczny typu TypeError z powodu niezgodności typów przekazanych argumentów)

Dyrektywa declare(strict_types=1); włącza ścisłą kontrolę typów w PHP. Przekazanie liczb zmiennoprzecinkowych (2.5, 3.5) do funkcji oczekującej liczb całkowitych (int $a, int $b) nie spowoduje niejawnej konwersji, lecz natychmiast wyrzuci błąd krytyczny Fatal error: Uncaught TypeError.

Dlaczego pozostałe opcje są nieprawidłowe?

  • A: W trybie strict_types=1 PHP nie zaokrągla floatów do intów przy wywołaniu.
  • C: Obcięcie części ułamkowej zachodzi w trybie domyślnym bez strict_types.
  • D: Deklaracja funkcji z typowaniem argumentów i typu zwracanego jest w 100% poprawna składniowo.

Chcesz poćwiczyć całą kwalifikację INF.03?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF03
Reklama

Podobne pytania z działu „Php skladnia i struktury”

Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 165 pytań z tego działu.