Bird
Raised Fist0
PHPprogramming~20 mins

Object instantiation with new in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PHP Object Master
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?
Consider this PHP code that creates a new object and accesses its property. What will it print?
PHP
<?php
class Dog {
    public $name;
    public function __construct($name) {
        $this->name = $name;
    }
}
$dog = new Dog("Buddy");
echo $dog->name;
?>
ABuddy
BDog
CError: Undefined property
DNULL
Attempts:
2 left
💡 Hint
Look at how the constructor sets the property and what is echoed.
❓ Predict Output
intermediate
2:00remaining
What will this PHP code output?
This code creates two objects from the same class. What will be printed?
PHP
<?php
class Counter {
    public static $count = 0;
    public function __construct() {
        self::$count++;
    }
}
$a = new Counter();
$b = new Counter();
echo Counter::$count;
?>
AError: Cannot access static property
B1
C0
D2
Attempts:
2 left
💡 Hint
Static properties are shared across all instances.
🔧 Debug
advanced
2:00remaining
What error does this PHP code produce?
This code tries to create an object but has a mistake. What error will it cause?
PHP
<?php
class Car {
    private $model;
    public function __construct($model) {
        $this->model = $model;
    }
}
$car = new Car();
echo $car->model;
?>
AFatal error: Cannot access private property Car::$model
BNotice: Undefined property: model
CFatal error: Missing argument 1 for Car::__construct()
DNo error, outputs empty string
Attempts:
2 left
💡 Hint
Check the constructor parameters and how the object is created.
📝 Syntax
advanced
2:00remaining
Which option will cause a syntax error in PHP?
Look at these ways to instantiate an object. Which one is NOT valid PHP syntax?
A$obj = new MyClass();
B$obj = new MyClass[];
C$obj = new MyClass;
D$obj = new MyClass(5);
Attempts:
2 left
💡 Hint
Check the use of brackets after the class name.
🚀 Application
expert
3:00remaining
How many objects are created and what is the output?
This code creates objects inside a loop and prints a property. How many objects are created and what is printed?
PHP
<?php
class Item {
    public $id;
    public function __construct($id) {
        $this->id = $id;
    }
}
$items = [];
for ($i = 1; $i <= 3; $i++) {
    $items[] = new Item($i);
}
foreach ($items as $item) {
    echo $item->id . " ";
}
?>
A3 objects created; output: '1 2 3 '
B1 object created; output: '3 '
C3 objects created; output: '3 3 3 '
DError: Cannot use object in array
Attempts:
2 left
💡 Hint
Each loop iteration creates a new object with a different id.

Practice

(1/5)
1.

What does the new keyword do in PHP?

easy
A. It deletes an existing object.
B. It defines a new class.
C. It calls a function inside a class.
D. It creates a new instance of a class (an object).

Solution

  1. Step 1: Understand the role of new

    The new keyword is used to create an object from a class blueprint.
  2. Step 2: Differentiate from other keywords

    It does not delete objects, call functions, or define classes; it only creates objects.
  3. Final Answer:

    It creates a new instance of a class (an object). -> Option D
  4. Quick Check:

    new creates objects [OK]
Hint: Remember: new = create object from class [OK]
Common Mistakes:
  • Thinking new deletes objects
  • Confusing new with function calls
  • Believing new defines classes
2.

Which of the following is the correct syntax to create a new object of class Car?

class Car {
  // class body
}

// Create object here
easy
A. $car = new Car();
B. $car = Car();
C. new $car = Car();
D. $car = Car.new();

Solution

  1. Step 1: Recall PHP object creation syntax

    In PHP, to create an object, use $variable = new ClassName();.
  2. Step 2: Check each option

    $car = new Car(); matches the correct syntax. The other options use invalid syntax: new before variable assignment, omitting the new keyword, or using dot notation.
  3. Final Answer:

    $car = new Car(); -> Option A
  4. Quick Check:

    Use new ClassName() to create objects [OK]
Hint: Use $obj = new ClassName(); always [OK]
Common Mistakes:
  • Omitting the new keyword
  • Placing new after variable
  • Using dot notation like other languages
3.

What will be the output of the following PHP code?

class Dog {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  public function bark() {
    return "Woof! I am " . $this->name;
  }
}

$dog = new Dog("Buddy");
echo $dog->bark();
medium
A. Woof! I am Buddy
B. Woof! I am $name
C. Error: Undefined property
D. Woof! I am

Solution

  1. Step 1: Understand constructor usage

    The constructor sets the name property to "Buddy" when the object is created.
  2. Step 2: Analyze the bark method output

    The bark() method returns "Woof! I am " concatenated with the name property, which is "Buddy".
  3. Final Answer:

    Woof! I am Buddy -> Option A
  4. Quick Check:

    Constructor sets name, bark returns it [OK]
Hint: Constructor sets data; methods use it [OK]
Common Mistakes:
  • Ignoring constructor parameters
  • Using variable name instead of property
  • Expecting syntax error due to missing parentheses
4.

Identify the error in this PHP code snippet:

class Person {
  public $age;
  public function __construct($age) {
    $this->age = $age;
  }
}

$person = Person(25);
echo $person->age;
medium
A. Property age should be private.
B. Constructor should not have parameters.
C. Missing new keyword when creating the object.
D. Cannot echo object property directly.

Solution

  1. Step 1: Check object instantiation syntax

    The object is created by calling Person(25) without new, which is invalid in PHP.
  2. Step 2: Correct the instantiation

    Use $person = new Person(25); to create the object properly.
  3. Final Answer:

    Missing new keyword when creating the object. -> Option C
  4. Quick Check:

    Always use new to instantiate objects [OK]
Hint: Always use new before class name to create object [OK]
Common Mistakes:
  • Forgetting new keyword
  • Thinking constructor can't have parameters
  • Confusing property visibility with errors
5.

Given this class:

class Book {
  public $title;
  public $author;
  public function __construct($title, $author) {
    $this->title = $title;
    $this->author = $author;
  }
}

// Create an array of books with titles and authors
$booksData = [
  ['1984', 'George Orwell'],
  ['Brave New World', 'Aldous Huxley'],
  ['Fahrenheit 451', 'Ray Bradbury']
];

// Fill this array with Book objects
$books = [];
foreach ($booksData as $data) {
  // Fill here
}

Which line correctly creates and adds a new Book object to $books inside the loop?

hard
A. $books[] = new Book($data[1], $data[0]);
B. $books[] = new Book($data[0], $data[1]);
C. $books[] = new Book($data);
D. $books[] = Book($data[0], $data[1]);

Solution

  1. Step 1: Understand constructor parameters

    The constructor expects two parameters: title and author, in that order.
  2. Step 2: Match data array to constructor

    $data[0] is title, $data[1] is author, so new Book($data[0], $data[1]) is correct.
  3. Step 3: Add object to array

    Using $books[] = appends the new object to the array.
  4. Final Answer:

    $books[] = new Book($data[0], $data[1]); -> Option B
  5. Quick Check:

    Use new with correct params and append [OK]
Hint: Match constructor params order exactly when using new [OK]
Common Mistakes:
  • Omitting new keyword
  • Passing whole array instead of separate params
  • Swapping title and author order
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