Bird
Raised Fist0
PHPprogramming~20 mins

Namespace declaration syntax in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Namespace Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this PHP code with namespaces?
Consider the following PHP code. What will it output when run?
PHP
<?php
namespace MyApp\Utils;

function greet() {
    return "Hello from Utils!";
}

namespace MyApp\Main;

function greet() {
    return "Hello from Main!";
}

use function MyApp\Utils\greet as utilsGreet;

echo greet() . " and " . utilsGreet();
AHello from Utils! and Hello from Utils!
BHello from Utils! and Hello from Main!
CHello from Main! and Hello from Main!
DHello from Main! and Hello from Utils!
Attempts:
2 left
💡 Hint
Remember that the code after the second namespace declaration is in MyApp\Main namespace.
❓ Predict Output
intermediate
1:30remaining
What error does this PHP namespace code produce?
What error will this PHP code produce when run?
PHP
<?php
namespace MyApp\Tools;

function tool() {
    return "Tool function";
}
ANo error, outputs nothing
BFatal error: Cannot redeclare namespace
CParse error: syntax error, unexpected 'function' (missing semicolon after namespace)
DWarning: namespace not found
Attempts:
2 left
💡 Hint
Check the syntax after the namespace declaration line.
❓ Predict Output
advanced
2:00remaining
What is the output of this PHP code with multiple namespace declarations?
What will this PHP code output when executed?
PHP
<?php
namespace A {
    const VALUE = 1;
}

namespace B {
    const VALUE = 2;
}

namespace {
    echo A\VALUE . "," . B\VALUE;
}
A1,2
B2,1
CVALUE,VALUE
DParse error
Attempts:
2 left
💡 Hint
Constants in namespaces are accessed with backslash and namespace name.
❓ Predict Output
advanced
2:30remaining
What is the output of this PHP code using namespace and class?
What will this PHP code output when run?
PHP
<?php
namespace Outer\Inner;

class Test {
    public function message() {
        return "Inside Inner";
    }
}

namespace Outer;

class Test {
    public function message() {
        return "Inside Outer";
    }
}

namespace {
    $obj1 = new Outer\Test();
    $obj2 = new Outer\Inner\Test();
    echo $obj1->message() . " and " . $obj2->message();
}
AInside Inner and Inside Outer
BInside Outer and Inside Inner
CFatal error: Class not found
DParse error
Attempts:
2 left
💡 Hint
Classes in different namespaces can have the same name.
❓ Predict Output
expert
3:00remaining
What is the output of this PHP code with nested namespaces and use statements?
What will this PHP code output when executed?
PHP
<?php
namespace Alpha\Beta {
    class Sample {
        public function getName() {
            return "Alpha\\Beta";
        }
    }
}

namespace Alpha {
    use Alpha\Beta\Sample as BetaSample;

    class Sample {
        public function getName() {
            return "Alpha";
        }

        public function getBetaName() {
            $obj = new BetaSample();
            return $obj->getName();
        }
    }
}

namespace {
    $obj = new Alpha\Sample();
    echo $obj->getName() . " and " . $obj->getBetaName();
}
AAlpha and Alpha\Beta
BAlpha\Beta and Alpha
CFatal error: Class not found
DParse error
Attempts:
2 left
💡 Hint
The use statement imports Alpha\Beta\Sample as BetaSample inside Alpha namespace.

Practice

(1/5)
1. What is the correct way to declare a namespace in a PHP file?
easy
A. use MyApp;
B. namespace MyApp;
C. package MyApp;
D. module MyApp;

Solution

  1. Step 1: Understand PHP namespace declaration

    PHP uses the keyword namespace to declare namespaces at the top of a file.
  2. Step 2: Identify the correct syntax

    The correct syntax is namespace MyApp; with a semicolon at the end.
  3. Final Answer:

    namespace MyApp; -> Option B
  4. Quick Check:

    Keyword 'namespace' declares namespaces [OK]
Hint: Use 'namespace' keyword followed by name and semicolon [OK]
Common Mistakes:
  • Using 'package' instead of 'namespace'
  • Forgetting the semicolon at the end
  • Using 'use' to declare namespace
  • Writing 'module' which is not valid in PHP
2. Which of the following is the correct syntax to declare a nested namespace in PHP?
easy
A. namespace MyApp/Utils;
B. namespace MyApp-Utils;
C. namespace MyApp.Utils;
D. namespace MyApp\Utils;

Solution

  1. Step 1: Recognize namespace separator in PHP

    PHP uses backslashes (\) to separate nested namespaces.
  2. Step 2: Check each option for correct separator

    Only namespace MyApp\Utils; uses backslashes correctly: namespace MyApp\Utils;.
  3. Final Answer:

    namespace MyApp\Utils; -> Option D
  4. Quick Check:

    Backslash separates nested namespaces [OK]
Hint: Use double backslash \ for nested namespaces [OK]
Common Mistakes:
  • Using forward slash / instead of backslash
  • Using dot . or dash - which are invalid
  • Omitting the semicolon at the end
3. What will be the output of the following PHP code?
<?php
namespace App\Tools;
class Helper {
  public static function greet() {
    return 'Hello from Helper';
  }
}

use App\Tools\Helper;
echo Helper::greet();
?>
medium
A. Hello from Helper
B. Fatal error: Class 'Helper' not found
C. Hello from App\Tools\Helper
D. Syntax error

Solution

  1. Step 1: Understand namespace and use statement

    The class Helper is declared inside namespace App\Tools. The use statement imports it so we can call Helper directly.
  2. Step 2: Check method call and output

    Calling Helper::greet() returns the string 'Hello from Helper'.
  3. Final Answer:

    Hello from Helper -> Option A
  4. Quick Check:

    Use imports class, method returns greeting [OK]
Hint: Use imports namespace class to call methods directly [OK]
Common Mistakes:
  • Forgetting to use the 'use' statement
  • Calling class without full namespace
  • Assuming output includes namespace name
  • Syntax errors from missing semicolons
4. Identify the error in this PHP namespace declaration:
<?php
namespace MyApp\Utils
class Logger {}
?>
medium
A. Class name Logger is invalid
B. Namespace name cannot contain backslashes
C. Missing semicolon after namespace declaration
D. Namespace must be declared after class

Solution

  1. Step 1: Check namespace declaration syntax

    The namespace declaration must end with a semicolon (;).
  2. Step 2: Identify missing semicolon

    The code misses the semicolon after namespace MyApp\Utils.
  3. Final Answer:

    Missing semicolon after namespace declaration -> Option C
  4. Quick Check:

    Namespace declarations require semicolon [OK]
Hint: Always end namespace line with semicolon [OK]
Common Mistakes:
  • Omitting semicolon after namespace
  • Thinking backslash is invalid in namespace
  • Placing namespace after class
  • Misnaming classes
5. You want to declare two nested namespaces Company\Project\Module in one PHP file. Which is the correct way to do this?
hard
A. namespace Company\Project\Module; class Feature {}
B. namespace Company; namespace Project; namespace Module; class Feature {}
C. namespace Company/Project/Module; class Feature {}
D. namespace Company.Project.Module; class Feature {}

Solution

  1. Step 1: Understand nested namespace declaration

    PHP allows declaring nested namespaces in one line using backslashes.
  2. Step 2: Evaluate each option

    namespace Company\Project\Module; class Feature {} correctly declares nested namespaces with backslashes and a semicolon. Separate declarations like namespace Company; namespace Project; namespace Module; class Feature {} place the class in top-level Module, not nested under Company\Project. Using forward slashes or dots as separators is invalid.
  3. Final Answer:

    namespace Company\Project\Module; class Feature {} -> Option A
  4. Quick Check:

    Nested namespaces use backslashes in one declaration [OK]
Hint: Use one namespace line with backslashes for nesting [OK]
Common Mistakes:
  • Declaring multiple namespaces in one file incorrectly
  • Using slashes or dots instead of backslashes
  • Forgetting semicolon after namespace
  • Trying to declare nested namespaces on separate lines
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