Bird
Raised Fist0
PHPprogramming~20 mins

Class declaration syntax in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PHP Class Syntax Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a simple PHP class method call
What is the output of this PHP code?
PHP
<?php
class Greeting {
    public function sayHello() {
        return "Hello, world!";
    }
}
$greet = new Greeting();
echo $greet->sayHello();
?>
AParse error: syntax error, unexpected 'return'
BHello, world!
CFatal error: Call to undefined method Greeting::sayHello()
DHello world
Attempts:
2 left
💡 Hint
Look at the method name and how it is called on the object.
❓ Predict Output
intermediate
2:00remaining
Output when accessing a private property directly
What happens when this PHP code runs?
PHP
<?php
class Person {
    private string $name = "Alice";
}
$p = new Person();
echo $p->name;
?>
AAlice
BNotice: Undefined property: Person::$name
CFatal error: Uncaught Error: Cannot access private property Person::$name
DParse error: syntax error, unexpected 'string'
Attempts:
2 left
💡 Hint
Check the visibility of the property and how it is accessed.
🔧 Debug
advanced
2:00remaining
Identify the syntax error in this class declaration
This PHP code has a syntax error. Which option shows the exact error message produced when running it?
PHP
<?php
class Car {
    public $make;
    public $model
    public function __construct($make, $model) {
        $this->make = $make;
        $this->model = $model;
    }
}
?>
AParse error: syntax error, unexpected 'public' (T_PUBLIC) in line 4
BFatal error: Cannot redeclare class Car
CNotice: Undefined variable: model
DParse error: syntax error, unexpected '$make' (T_VARIABLE) in line 5
Attempts:
2 left
💡 Hint
Look carefully at the property declarations and missing punctuation.
❓ Predict Output
advanced
2:00remaining
Output of static property access in PHP class
What is the output of this PHP code?
PHP
<?php
class Counter {
    public static int $count = 0;
    public function __construct() {
        self::$count++;
    }
}
new Counter();
new Counter();
echo Counter::$count;
?>
A1
B0
CFatal error: Access to undeclared static property Counter::$count
D2
Attempts:
2 left
💡 Hint
Static properties are shared across all instances of the class.
❓ Predict Output
expert
2:00remaining
Output of class constant and method call
What is the output of this PHP code?
PHP
<?php
class MathConstants {
    public const PI = 3.14;
    public static function getPi() {
        return self::PI;
    }
}
echo MathConstants::PI . ' ' . MathConstants::getPi();
?>
A3.14 3.14
BPI 3.14
C3.14 getPi
DFatal error: Access to undefined constant PI
Attempts:
2 left
💡 Hint
Class constants are accessed with :: and can be used inside static methods with self::

Practice

(1/5)
1. What is the correct way to start declaring a class named Car in PHP?
easy
A. class Car { }
B. function Car() { }
C. Car class { }
D. declare class Car { }

Solution

  1. Step 1: Understand PHP class declaration syntax

    In PHP, classes are declared using the keyword class followed by the class name and curly braces.
  2. Step 2: Match the syntax to the options

    class Car { } uses class Car { }, which is the correct syntax. Other options use incorrect keywords or order.
  3. Final Answer:

    class Car { } -> Option A
  4. Quick Check:

    PHP class declaration = class ClassName { } [OK]
Hint: Look for 'class' keyword followed by name and braces [OK]
Common Mistakes:
  • Using 'function' instead of 'class'
  • Placing 'class' after the name
  • Adding extra keywords like 'declare'
2. Which of the following is the correct syntax to declare an empty class named Person in PHP?
easy
A. class Person() { }
B. class Person[] { }
C. class Person {};
D. class Person { }

Solution

  1. Step 1: Recall PHP class declaration syntax

    PHP classes are declared with the keyword class, the class name, and curly braces without parentheses or brackets.
  2. Step 2: Check each option

    class Person { } uses class Person { }, which is correct. class Person() { } wrongly uses parentheses, B uses brackets, and D adds a semicolon after braces which is unnecessary.
  3. Final Answer:

    class Person { } -> Option D
  4. Quick Check:

    Empty class = class Name { } [OK]
Hint: No parentheses or brackets after class name [OK]
Common Mistakes:
  • Adding parentheses after class name
  • Using square brackets after class name
  • Adding unnecessary semicolon after class braces
3. What will be the output of this PHP code?
class Dog {
  public $name = "Buddy";
}
$dog = new Dog();
echo $dog->name;
medium
A. Buddy
B. Dog
C. Error: Undefined property
D. null

Solution

  1. Step 1: Understand the class and property

    The class Dog has a public property $name set to "Buddy".
  2. Step 2: Create an object and access property

    Creating $dog = new Dog(); makes an object. Accessing $dog->name returns "Buddy".
  3. Final Answer:

    Buddy -> Option A
  4. Quick Check:

    Access public property = property value [OK]
Hint: Public properties can be accessed directly via object [OK]
Common Mistakes:
  • Expecting class name instead of property value
  • Forgetting to create an object before access
  • Assuming property is private and inaccessible
4. Identify the error in this PHP class declaration:
class Animal
  public $type;
}
medium
A. Class name should be lowercase
B. Missing opening brace { after class name
C. Property must be static
D. Missing semicolon after class name

Solution

  1. Step 1: Check class declaration syntax

    PHP classes require an opening brace { immediately after the class name.
  2. Step 2: Analyze the given code

    The code has no opening brace after class Animal, causing a syntax error.
  3. Final Answer:

    Missing opening brace { after class name -> Option B
  4. Quick Check:

    Class declaration needs { after name [OK]
Hint: Always put { right after class name [OK]
Common Mistakes:
  • Omitting opening brace {
  • Thinking semicolon needed after class name
  • Confusing property declaration rules
5. You want to declare a PHP class Book with a property $title initialized to "PHP Basics" and a method getTitle() that returns the title. Which is the correct class declaration?
hard
A. class Book { public $title; public function getTitle() { return $title; } }
B. class Book { public $title = "PHP Basics"; function getTitle() { return title; } }
C. class Book { public $title = "PHP Basics"; public function getTitle() { return $this->title; } }
D. class Book { public $title = "PHP Basics"; public function getTitle() { return $Book->title; } }

Solution

  1. Step 1: Declare property with initial value

    Property $title is declared public and initialized to "PHP Basics" correctly in class Book { public $title = "PHP Basics"; public function getTitle() { return $this->title; } }.
  2. Step 2: Define method returning property

    Method getTitle() must return $this->title to access the object's property. class Book { public $title = "PHP Basics"; public function getTitle() { return $this->title; } } does this correctly.
  3. Step 3: Check other options for errors

    class Book { public $title = "PHP Basics"; function getTitle() { return title; } } returns title without $this->, class Book { public $title; public function getTitle() { return $title; } } returns $title which is undefined in method scope, class Book { public $title = "PHP Basics"; public function getTitle() { return $Book->title; } } uses $Book->title which is invalid inside class.
  4. Final Answer:

    class Book { public $title = "PHP Basics"; public function getTitle() { return $this->title; } } -> Option C
  5. Quick Check:

    Use $this->property inside methods [OK]
Hint: Use $this->property to access inside methods [OK]
Common Mistakes:
  • Returning property without $this-> inside method
  • Using variable names without $this->
  • Trying to access property with class name variable
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