Bird
Raised Fist0
PHPprogramming~20 mins

Methods and $this keyword in PHP - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of Methods and $this
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of method using $this keyword
What is the output of this PHP code?
PHP
<?php
class Car {
    public $color = 'red';
    public function getColor() {
        return $this->color;
    }
}
$car = new Car();
echo $car->getColor();
?>
AError: Undefined property
BCar
Cnull
Dred
Attempts:
2 left
💡 Hint
Remember $this refers to the current object instance.
❓ Predict Output
intermediate
2:00remaining
Effect of missing $this in method
What error or output does this PHP code produce?
PHP
<?php
class Person {
    public $name = 'Alice';
    public function sayName() {
        return name;
    }
}
$p = new Person();
echo $p->sayName();
?>
AError: Undefined constant 'name'
BAlice
Cnull
DEmpty string
Attempts:
2 left
💡 Hint
Check how properties are accessed inside methods.
🔧 Debug
advanced
2:30remaining
Why does this method not update the property?
Consider this PHP code. Why does the setAge method not change the $age property of the object?
PHP
<?php
class User {
    public $age = 20;
    public function setAge($age) {
        $age = $age;
    }
}
$user = new User();
$user->setAge(30);
echo $user->age;
?>
ABecause the method is static and cannot access instance properties.
BBecause $age property is private and cannot be changed.
CBecause the method assigns the parameter to itself, not to the property using $this.
DBecause the property $age is not declared in the class.
Attempts:
2 left
💡 Hint
Look at how the assignment is done inside the method.
📝 Syntax
advanced
2:00remaining
Identify the syntax error in method using $this
Which option contains the correct syntax to return the $name property inside a method?
PHP
<?php
class Animal {
    public $name = 'Dog';
    public function getName() {
        // return statement here
    }
}
?>
Areturn $this->name;
Breturn this->$name;
Creturn $this.name;
Dreturn $name;
Attempts:
2 left
💡 Hint
Remember the correct syntax to access properties with $this.
🚀 Application
expert
3:00remaining
Predict the output of chained method calls using $this
What is the output of this PHP code?
PHP
<?php
class Builder {
    private $text = '';
    public function addHello() {
        $this->text .= 'Hello ';
        return $this;
    }
    public function addWorld() {
        $this->text .= 'World!';
        return $this;
    }
    public function getText() {
        return $this->text;
    }
}
$b = new Builder();
echo $b->addHello()->addWorld()->getText();
?>
AError: Cannot chain methods
BHello World!
CWorld!
DHello
Attempts:
2 left
💡 Hint
Check how methods return $this to allow chaining.

Practice

(1/5)
1. What does the $this keyword represent inside a PHP class method?
easy
A. A global variable
B. A static variable
C. The current object instance
D. The class name

Solution

  1. Step 1: Understand the role of $this in PHP classes

    $this is used inside class methods to refer to the current object instance that called the method.
  2. Step 2: Differentiate from other options

    It is not a static or global variable, nor does it represent the class name itself.
  3. Final Answer:

    The current object instance -> Option C
  4. Quick Check:

    $this = current object instance [OK]
Hint: Remember: $this always means 'this object' [OK]
Common Mistakes:
  • Confusing $this with static variables
  • Thinking $this is the class name
  • Assuming $this is a global variable
2. Which of the following is the correct way to call a method named greet inside a PHP class using $this?
easy
A. this->greet();
B. self->greet();
C. $this.greet();
D. $this->greet();

Solution

  1. Step 1: Recall PHP method call syntax inside classes

    Methods are called on objects using the arrow operator -> with $this representing the current object.
  2. Step 2: Check each option

    $this->greet(); is the correct syntax. The other options use invalid syntax.
  3. Final Answer:

    $this->greet(); -> Option D
  4. Quick Check:

    Method call syntax = $this->method(); [OK]
Hint: Use $this->methodName(); to call methods inside class [OK]
Common Mistakes:
  • Using dot (.) instead of arrow (->) operator
  • Omitting the dollar sign in $this
  • Using self without scope resolution operator
3. What will be the output of the following PHP code?
class Person {
  public $name = 'Alice';
  public function sayName() {
    return 'Name: ' . $this->name;
  }
}
$p = new Person();
echo $p->sayName();
medium
A. Name: Alice
B. Name: $name
C. Name:
D. Error: Undefined property

Solution

  1. Step 1: Understand property access with $this

    The method sayName() returns the string 'Name: ' concatenated with the object's name property accessed via $this->name.
  2. Step 2: Check the property value and output

    The property name is set to 'Alice', so the output will be 'Name: Alice'.
  3. Final Answer:

    Name: Alice -> Option A
  4. Quick Check:

    Property accessed via $this = 'Alice' [OK]
Hint: Remember: $this->property accesses current object's data [OK]
Common Mistakes:
  • Forgetting to use $this to access properties
  • Expecting literal string output without variable substitution
  • Confusing property name with string '$name'
4. Identify the error in this PHP class method:
class Car {
  public $model = 'Tesla';
  public function getModel() {
    return $model;
  }
}
medium
A. Missing $this when accessing $model
B. Method name should be GetModel with capital G
C. Property $model must be private
D. Return statement should be return $this->getModel;

Solution

  1. Step 1: Check property access inside method

    Inside class methods, properties must be accessed with $this->propertyName. Here, $model is used without $this->.
  2. Step 2: Validate other options

    Method names are case-insensitive in PHP, property visibility is not an error here, and the suggested return $this->getModel; is incorrect.
  3. Final Answer:

    Missing $this when accessing $model -> Option A
  4. Quick Check:

    Use $this->property to access properties [OK]
Hint: Always use $this-> to access object properties inside methods [OK]
Common Mistakes:
  • Accessing properties without $this->
  • Confusing method name case sensitivity
  • Misunderstanding property visibility rules
5. Given the class below, what will be the output?
class Counter {
  private $count = 0;
  public function increment() {
    $this->count++;
  }
  public function getCount() {
    return $this->count;
  }
}
$c = new Counter();
$c->increment();
$c->increment();
echo $c->getCount();
hard
A. Error: Cannot access private property
B. 2
C. 1
D. 0

Solution

  1. Step 1: Understand property increment inside the class

    The increment() method increases the private $count property by 1 each time it is called.
  2. Step 2: Trace method calls and final output

    Calling increment() twice increases $count from 0 to 2. Then getCount() returns 2.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    Two increments = count 2 [OK]
Hint: Private properties accessed via $this inside class work fine [OK]
Common Mistakes:
  • Assuming private properties can't be accessed inside class methods
  • Forgetting that increment operator changes value
  • Expecting output before increments
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