Bird
Raised Fist0
PHPprogramming~15 mins

Global namespace access in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Global Namespace Access in PHP
📖 Scenario: Imagine you are writing a PHP script that uses a function named strlen to find the length of a string. However, you also have a custom function named strlen inside a namespace. You want to use the original PHP strlen function from the global namespace.
🎯 Goal: You will create a namespaced function with the same name as a global PHP function, then learn how to call the global function explicitly using the global namespace access.
📋 What You'll Learn
Create a namespace called MyApp
Inside MyApp, create a function called strlen that returns a fixed number
Create a variable $text with the value 'Hello'
Call the global strlen function on $text using global namespace access
Print the result of the global strlen function call
💡 Why This Matters
🌍 Real World
Namespaces help organize code and avoid name conflicts in large PHP projects.
💼 Career
Understanding namespaces and global namespace access is important for working with modern PHP frameworks and libraries.
Progress0 / 4 steps
1
Create a namespace and a custom strlen function
Create a namespace called MyApp. Inside it, define a function called strlen that takes one parameter $str and returns the number 42.
PHP
Hint

Use the namespace keyword to create a namespace. Define the function inside curly braces.

2
Create a variable with a string value
Outside the MyApp namespace, create a variable called $text and set it to the string 'Hello'.
PHP
Hint

Just create a variable $text and assign the string 'Hello' to it.

3
Call the global strlen function using global namespace access
Create a variable called $length and set it to the result of calling the global strlen function on $text using the global namespace access operator \.
PHP
Hint

Use \strlen($text) to call the global PHP function strlen explicitly.

4
Print the length from the global strlen function
Print the value of the variable $length using echo.
PHP
Hint

Use echo $length; to display the length.

Practice

(1/5)
1. What does the leading backslash \ do when used before a function name inside a PHP namespace?
easy
A. It creates a new function inside the current namespace.
B. It comments out the function call.
C. It calls a function from the current namespace only.
D. It accesses the function from the global namespace.

Solution

  1. Step 1: Understand namespaces in PHP

    Namespaces group code to avoid name conflicts but can hide global functions.
  2. Step 2: Role of leading backslash

    The leading backslash tells PHP to look for the function in the global namespace, ignoring the current namespace.
  3. Final Answer:

    It accesses the function from the global namespace. -> Option D
  4. Quick Check:

    Leading backslash = global access [OK]
Hint: Leading \ means use global function, not namespaced one [OK]
Common Mistakes:
  • Thinking \ creates a new function
  • Assuming \ calls current namespace function
  • Confusing \ with escape character
2. Which of the following is the correct syntax to call the global strlen function inside a namespace?
easy
A. \strlen('test');
B. namespace\strlen('test');
C. strlen('test');
D. global strlen('test');

Solution

  1. Step 1: Identify global function call syntax

    To call a global function inside a namespace, prefix it with a backslash \.
  2. Step 2: Check each option

    \strlen('test'); uses \strlen('test'); which correctly calls the global strlen function.
  3. Final Answer:

    \strlen('test'); -> Option A
  4. Quick Check:

    Backslash before function = global call [OK]
Hint: Use \ before function name to call global version [OK]
Common Mistakes:
  • Omitting the leading backslash inside namespaces
  • Using 'global' keyword incorrectly
  • Trying to prefix with 'namespace' keyword
3. What will be the output of this PHP code?
namespace MyApp;
function strlen($str) {
    return 42;
}

echo strlen('hello');
echo "-";
echo \strlen('hello');
medium
A. 42-5
B. 5-5
C. 42-42
D. 5-42

Solution

  1. Step 1: Understand function calls inside namespace

    Calling strlen('hello') calls MyApp\strlen which returns 42.
  2. Step 2: Understand global function call

    Calling \strlen('hello') calls global strlen which returns length 5.
  3. Final Answer:

    42-5 -> Option A
  4. Quick Check:

    Namespaced strlen = 42, global strlen = 5 [OK]
Hint: No \ calls local, \ calls global function [OK]
Common Mistakes:
  • Assuming both calls return same value
  • Mixing up which strlen is called
  • Ignoring namespace effect on function calls
4. Identify the error in this PHP code snippet inside a namespace:
namespace Test;
function array_sum($arr) {
    return 0;
}

$result = array_sum([1, 2, 3]);
$result2 = \array_sum([1, 2, 3]);
echo $result . ',' . $result2;
medium
A. Runtime error because \array_sum is undefined.
B. Syntax error due to missing semicolon.
C. No error, code runs and outputs '0,6'.
D. Namespace keyword used incorrectly.

Solution

  1. Step 1: Check function definitions and calls

    array_sum is redefined in namespace Test to always return 0.
  2. Step 2: Understand calls

    array_sum([1,2,3]) calls namespaced function returning 0; \array_sum calls global function returning 6.
  3. Final Answer:

    No error, code runs and outputs '0,6'. -> Option C
  4. Quick Check:

    Namespaced and global functions both called correctly [OK]
Hint: Leading \ calls global function, no syntax error [OK]
Common Mistakes:
  • Thinking \array_sum is undefined
  • Expecting syntax errors from backslash
  • Confusing namespace keyword usage
5. You have a namespaced class MyApp\Logger and a global class Logger. How do you instantiate the global Logger inside the MyApp namespace?
hard
A. $log = new Logger();
B. $log = new \Logger();
C. $log = new MyApp\Logger();
D. $log = new global\Logger();

Solution

  1. Step 1: Understand class instantiation in namespaces

    Without backslash, new Logger() looks for MyApp\Logger inside the namespace.
  2. Step 2: Use leading backslash to access global class

    new \Logger() creates an instance of the global Logger class.
  3. Final Answer:

    $log = new \Logger(); -> Option B
  4. Quick Check:

    Leading \ before class = global class instantiation [OK]
Hint: Use \ before class name to instantiate global class [OK]
Common Mistakes:
  • Omitting \ and getting namespaced class
  • Using 'global\' which is invalid
  • Confusing namespace prefix with global access
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard