📖 Scenario: You are building a simple Laravel web page that shows a greeting message based on the current hour of the day. You want to use raw PHP inside your Blade template to decide which greeting to show.
🎯 Goal: Create a Blade template that uses the @php directive to write raw PHP code. The PHP code should get the current hour and set a greeting message variable. Then display the greeting message in the HTML.
📋 What You'll Learn
Create a variable $hour inside @php that stores the current hour using date('H').
Create a variable $greeting inside @php that sets the greeting to 'Good morning' if $hour is less than 12, otherwise 'Good afternoon'.
Display the $greeting variable inside an <h1> tag in the Blade template.
Use the @php directive to write the raw PHP code block.
💡 Why This Matters
🌍 Real World
Many Laravel projects use Blade templates to build web pages. Sometimes you need to run small PHP code snippets directly in the template for dynamic content.
💼 Career
Understanding how to mix PHP logic with Blade templates is important for Laravel developers to create flexible and dynamic views.
Progress0 / 4 steps
1
Create the Blade template skeleton
Create a Blade template file with an <h1> tag that will later show the greeting message. For now, leave the <h1> tag empty.
Laravel
Hint
Start by writing the basic HTML structure with an <h1> tag inside your Blade template.
2
Add raw PHP block to get current hour
Inside the Blade template, add a raw PHP block using @php and @endphp. Inside this block, create a variable called $hour and set it to the current hour using date('H').
Laravel
Hint
Use @php and @endphp to write raw PHP code inside Blade. Use date('H') to get the current hour as a string.
3
Add greeting logic inside the PHP block
Inside the same @php block, add a variable called $greeting. Use an if statement to set $greeting to 'Good morning' if $hour is less than 12, otherwise set it to 'Good afternoon'.
Laravel
Hint
Use a simple if statement in PHP to check the hour and assign the greeting message.
4
Display the greeting message in the template
Below the @php block, display the $greeting variable inside the <h1> tag using Blade's echo syntax {{ }}.
Laravel
Hint
Use {{ $greeting }} to show the greeting message inside the HTML.
Practice
(1/5)
1. What is the main purpose of using @php in a Laravel Blade template?
easy
A. To define routes in Laravel
B. To include CSS styles directly
C. To create database migrations
D. To write raw PHP code inside the Blade template
Solution
Step 1: Understand Blade template usage
Blade templates allow embedding PHP code for dynamic content.
Step 2: Identify the role of @php
The @php directive lets you write plain PHP code inside Blade templates.
Final Answer:
To write raw PHP code inside the Blade template -> Option D
Quick Check:
@php is for raw PHP code [OK]
Hint: Remember @php means raw PHP inside Blade [OK]
Common Mistakes:
Confusing @php with CSS or HTML directives
Thinking @php defines routes or migrations
Using @php to write JavaScript code
2. Which of the following is the correct syntax to write raw PHP code inside a Blade template using @php?
easy
A. @php { echo 'Hello'; }
B.
C. @php echo 'Hello'; @endphp
D. @php echo 'Hello';
Solution
Step 1: Recall Blade raw PHP syntax
Blade uses @php to start and @endphp to end raw PHP blocks.
Step 2: Check each option
@php echo 'Hello'; @endphp correctly uses @php and @endphp to wrap PHP code.
Final Answer:
@php echo 'Hello'; @endphp -> Option C
Quick Check:
Raw PHP block must start with @php and end with @endphp [OK]
Hint: Use @php ... @endphp to wrap PHP code in Blade [OK]
Common Mistakes:
Omitting the closing @endphp
Using curly braces instead of @endphp
Using raw PHP tags inside Blade without @php
3. What will be the output of the following Blade snippet?
PHP requires semicolons after statements; the assignment line lacks one.
Step 2: Confirm other syntax correctness
Double quotes and variable usage are correct; @endphp is present.
Final Answer:
Missing semicolon after variable assignment -> Option A
Quick Check:
Every PHP statement needs a semicolon [OK]
Hint: Check semicolons after each PHP statement [OK]
Common Mistakes:
Forgetting semicolon after variable assignment
Assuming Blade handles PHP syntax errors
Missing closing @endphp tag
5. You want to display a list of users with their ages using raw PHP inside a Blade template. Which code correctly uses @php to loop through $users = [['name' => 'Bob', 'age' => 25], ['name' => 'Sue', 'age' => 30]]; and echo each user's name and age?
hard
A. @php
foreach ($users as $user) {
echo 'Name: $user[name], Age: $user[age] ';
}
@endphp
B. @php
foreach ($users as $user) {
echo "Name: {$user['name']}, Age: {$user['age']} ";
}
@endphp
C. @php
foreach ($users as $user) {
echo "Name: $user->name, Age: $user->age ";
}
@endphp
D. @php
foreach ($users as $user) {
echo "Name: $user[name], Age: $user[age] ";
}
@endphp
Solution
Step 1: Understand the data structure
$users is an array of associative arrays, so access uses square brackets with quotes.
Step 2: Check string interpolation syntax
@php
foreach ($users as $user) {
echo "Name: {$user['name']}, Age: {$user['age']} ";
}
@endphp correctly uses curly braces around array keys inside double quotes for interpolation.
Final Answer:
@php
foreach ($users as $user) {
echo "Name: {$user['name']}, Age: {$user['age']}<br>";
}
@endphp -> Option B
Quick Check:
Use {$array['key']} inside double quotes for correct interpolation [OK]
Hint: Use curly braces for array keys inside double quotes [OK]
Common Mistakes:
Using single quotes with variables inside (no interpolation)
Accessing arrays as objects ($user->name) when they are arrays
Not using curly braces for array keys inside strings
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.