What does the declare(strict_types=1); directive do in PHP?
It enforces strict type checking for scalar type declarations in the file, meaning PHP will not perform type coercion and will throw a TypeError if types do not match exactly.
Click to reveal answer
beginner
Where must the declare(strict_types=1); directive be placed in a PHP file?
It must be the very first statement in the PHP file, immediately after the opening <?php tag, before any other code or whitespace.
Click to reveal answer
intermediate
True or False: The strict_types directive affects all files included or required by the current PHP file.
False. The strict_types directive applies only to the file where it is declared. Each file must declare it separately if strict typing is desired.
Click to reveal answer
beginner
What happens if you call a function with a type mismatch when strict_types=1 is declared?
PHP throws a TypeError exception immediately instead of trying to convert the value to the expected type.
Click to reveal answer
beginner
Example: How to declare strict types in a PHP file?
Place this at the top of your PHP file:
<?php
declare(strict_types=1);
// Your code here
Click to reveal answer
What is the correct way to enable strict typing in a PHP file?
Adeclare(strict_types=1); at the top of the file
Bset_strict_types(true); anywhere in the file
Cuse strict_types(); inside functions
Denable_strict_types in php.ini only
✗ Incorrect
The declare(strict_types=1); directive must be the first statement in the PHP file to enable strict typing.
If strict_types=1 is declared, what happens when you pass a float to a function expecting an int?
APHP converts the float to int automatically
BPHP rounds the float silently
CPHP ignores the type and runs the function
DPHP throws a TypeError
✗ Incorrect
With strict types enabled, PHP throws a TypeError if the argument type does not exactly match the declared type.
Does the strict_types directive affect included or required files automatically?
AYes, it applies to all included files
BNo, each file must declare it separately
COnly if included files are in the same directory
DOnly if included files have the same namespace
✗ Incorrect
Strict typing applies only to the file where declare(strict_types=1); is set.
Where must the declare(strict_types=1); statement appear in a PHP file?
AImmediately after the opening <code><?php</code> tag
BAnywhere before the first function call
CAfter all function definitions
DAt the end of the file
✗ Incorrect
It must be the very first statement after the opening PHP tag, before any other code.
What is the default behavior if strict_types is not declared?
APHP throws errors on type mismatch
BPHP enforces strict type checking
CPHP silently converts types when possible
DPHP disables all type checking
✗ Incorrect
By default, PHP uses weak typing and converts types automatically when possible.
Explain what the declare(strict_types=1); directive does in PHP and why you might want to use it.
Think about how PHP normally handles types and what changes with strict types.
You got /4 concepts.
Describe where and how to correctly place the declare(strict_types=1); directive in a PHP file.
Consider the file structure and PHP parsing rules.
You got /3 concepts.
Practice
(1/5)
1. What does the declare(strict_types=1); directive do in a PHP file?
easy
A. It enables automatic type conversion for function arguments.
B. It disables all error reporting in the PHP script.
C. It sets the default timezone for the script.
D. It forces PHP to check that function arguments match their declared types exactly.
Solution
Step 1: Understand the purpose of strict_types
The directive declare(strict_types=1); tells PHP to enforce exact type matching for function arguments and return values.
Step 2: Compare with other options
Options B, C, and D describe unrelated PHP features: error reporting, timezone setting, and type conversion, which are not controlled by this directive.
Final Answer:
It forces PHP to check that function arguments match their declared types exactly. -> Option D
Quick Check:
strict_types enforces exact type checks = A [OK]
Hint: Strict types means exact argument types only [OK]
Common Mistakes:
Thinking it disables errors
Confusing with timezone settings
Assuming it enables type coercion
2. Which of the following is the correct way to enable strict types in a PHP file?
easy
A.
B.
C.
D.
Solution
Step 1: Check correct syntax for declare directive
The correct syntax is declare(strict_types=1); placed at the top of the PHP file.
Step 2: Analyze each option
<?php declare(strict_types=1); ?> uses the exact correct syntax. Options A and B use invalid PHP syntax. <?php declare(strict_types = true); ?> uses true instead of 1, which is invalid for this directive.
Final Answer:
<?php declare(strict_types=1); ?> -> Option C
Quick Check:
declare(strict_types=1) is correct syntax = C [OK]
Hint: Use declare(strict_types=1); at file top [OK]
Common Mistakes:
Using true instead of 1
Trying to assign strict_types as a variable
Calling a non-existent function
3. Given this PHP code with strict types enabled:
<?php
declare(strict_types=1);
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, '3');
?>
What will be the output?
medium
A. TypeError: Argument 2 passed must be of the type int, string given
B. 8
C. 53
D. Warning: Implicit conversion from string to int
Solution
Step 1: Understand strict_types effect on function calls
With declare(strict_types=1);, PHP requires exact types. Passing a string '3' to a parameter typed as int causes an error.
Step 2: Predict the runtime behavior
PHP throws a TypeError because the second argument is a string, not an int, and no automatic conversion happens.
Final Answer:
TypeError: Argument 2 passed must be of the type int, string given -> Option A
Quick Check:
strict_types=1 + wrong argument type = TypeError [OK]
Hint: Strict types cause TypeError on wrong argument types [OK]
Common Mistakes:
Assuming PHP converts string '3' to int automatically
Expecting output 8 or 53
Confusing warning with error
4. Identify the error in this PHP code snippet:
<?php
function multiply(int $x, int $y): int {
return $x * $y;
}
declare(strict_types=1);
echo multiply(4, 5);
?>
medium
A. The declare(strict_types=1); must be at the top before any code.
B. The function multiply must return a string, not int.
C. The function parameters should not have types declared.
D. There is no error; the code runs fine.
Solution
Step 1: Check position of declare(strict_types=1);
The strict_types directive must be declared at the very top of the PHP file, before any code or whitespace.
Step 2: Analyze the code order
Here, the function is declared before the strict_types directive, which is invalid and causes the directive to be ignored or cause an error.
Final Answer:
The declare(strict_types=1); must be at the top before any code. -> Option A
Quick Check:
declare(strict_types=1) must be first line = B [OK]
Hint: Put declare(strict_types=1); at file very top [OK]
Common Mistakes:
Placing declare after code or functions
Thinking return type must be string
Removing type declarations from parameters
5. You want to write a PHP function that accepts only integers and returns their sum. You also want to ensure no accidental type coercion happens anywhere in the file. How should you set up your PHP file?
hard
A. Use no type declarations and rely on PHP's automatic type conversion.
B. Place declare(strict_types=1); at the top, then define the function with int types.
C. Use declare(strict_types=0); and define the function with int types.
D. Define the function with int types but do not use declare(strict_types=1);
Solution
Step 1: Enable strict types at the file start
To prevent type coercion, add declare(strict_types=1); at the very top of the PHP file.
Step 2: Define the function with int type hints
Declare the function parameters and return type as int to enforce integer-only usage.
Final Answer:
Place declare(strict_types=1); at the top, then define the function with int types. -> Option B
Quick Check:
strict_types=1 + int types = strict integer enforcement [OK]
Hint: Use declare(strict_types=1); plus int type hints [OK]
Common Mistakes:
Skipping declare(strict_types=1);
Using declare(strict_types=0); which allows coercion
Not adding type hints in function
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.