Bird
Raised Fist0
PHPprogramming~10 mins

Parent keyword behavior in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Parent keyword behavior
Define Parent Class with method
↓
Define Child Class extends Parent
↓
Override method in Child
↓
Call parent::method() inside Child method
↓
Execute Child method
↓
Parent method runs, then Child continues
Shows how a child class calls a method from its parent class using the parent keyword inside an overridden method.
Execution Sample
PHP
<?php
class ParentClass {
  function greet() {
    echo "Hello from Parent\n";
  }
}

class ChildClass extends ParentClass {
  function greet() {
    parent::greet();
    echo "Hello from Child\n";
  }
}

$obj = new ChildClass();
$obj->greet();
?>
This code shows a child class calling its parent's greet method before adding its own message.
Execution Table
StepActionEvaluationOutput
1Create ChildClass objectObject created
2Call greet() on ChildClass objectChildClass::greet() runs
3Inside ChildClass::greet(), call parent::greet()ParentClass::greet() runsHello from Parent
4Continue ChildClass::greet() after parent callEcho child messageHello from Child
5Method greet() endsReturn to caller
💡 Method greet() completes after printing both parent and child messages
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
$objnullChildClass objectChildClass objectChildClass objectChildClass object
Key Moments - 2 Insights
Why do we use parent::greet() inside the child method?
Using parent::greet() calls the original method from the parent class, allowing the child to add behavior without replacing the parent's code entirely, as shown in step 3 of the execution_table.
What happens if we omit parent::greet() in the child method?
If omitted, only the child's message prints because the parent's greet method is not called, so the output would miss "Hello from Parent", as seen by comparing step 3 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is printed at step 3?
A"Hello from Child"
B"Hello from Parent"
CNothing is printed
DAn error occurs
💡 Hint
Check the Output column at step 3 in the execution_table
At which step does the child class add its own message?
AStep 4
BStep 3
CStep 2
DStep 5
💡 Hint
Look at the Action and Output columns in the execution_table for when "Hello from Child" is printed
If we remove parent::greet() call, what changes in variable_tracker?
A$obj becomes null
B$obj changes to ParentClass object
CNo change in $obj variable values
D$obj is undefined
💡 Hint
Variable $obj remains the same object regardless of method calls, see variable_tracker
Concept Snapshot
Parent keyword in PHP lets a child class call a method from its parent class.
Use parent::methodName() inside an overridden method.
This allows extending behavior without replacing it.
Without parent::, only child method runs.
Useful for code reuse and adding extra steps.
Full Transcript
This example shows how a child class in PHP can call a method from its parent class using the parent keyword. First, a ParentClass defines a greet method that prints a message. Then, ChildClass extends ParentClass and overrides greet. Inside ChildClass's greet, it calls parent::greet() to run the parent's method, then prints its own message. When we create a ChildClass object and call greet, the output shows the parent's message followed by the child's message. The execution table traces each step: creating the object, calling the method, calling the parent method, printing the child's message, and ending the method. The variable tracker shows the object stays the same throughout. Key moments clarify why parent:: is used and what happens if omitted. The quiz tests understanding of output at each step and variable state. This helps beginners see how inheritance and method overriding work with parent keyword in PHP.

Practice

(1/5)
1. What does the parent keyword do in PHP classes?
easy
A. It renames the parent class.
B. It creates a new instance of the parent class.
C. It deletes the parent class methods from the child class.
D. It allows a child class to access methods or properties from its parent class.

Solution

  1. Step 1: Understand the role of parent keyword

    The parent keyword in PHP is used inside a child class to refer to its parent class.
  2. Step 2: Identify what parent allows

    It allows the child class to call or extend methods or properties defined in the parent class.
  3. Final Answer:

    It allows a child class to access methods or properties from its parent class. -> Option D
  4. Quick Check:

    parent accesses parent methods/properties [OK]
Hint: Remember: parent calls parent class features [OK]
Common Mistakes:
  • Thinking parent creates new objects
  • Confusing parent with $this
  • Believing parent deletes methods
2. Which of the following is the correct syntax to call a parent class method named show inside a child class method?
easy
A. parent.show();
B. parent->show();
C. parent::show();
D. parent:show();

Solution

  1. Step 1: Recall PHP syntax for calling parent methods

    In PHP, to call a parent class method inside a child, use the scope resolution operator :: with parent.
  2. Step 2: Match the correct syntax

    The correct syntax is parent::methodName();, so for method show, it is parent::show();.
  3. Final Answer:

    parent::show(); -> Option C
  4. Quick Check:

    Use :: with parent to call methods [OK]
Hint: Use double colon (::) to call parent methods [OK]
Common Mistakes:
  • Using arrow (->) instead of double colon (::)
  • Using dot (.) operator which is for strings
  • Using single colon (:) which is invalid syntax
3. What will be the output of this PHP code?
class A {
  public function greet() {
    return "Hello from A";
  }
}

class B extends A {
  public function greet() {
    return parent::greet() . " and B";
  }
}

$b = new B();
echo $b->greet();
medium
A. Hello from A
B. Hello from A and B
C. Hello from B
D. Error: Cannot call parent method

Solution

  1. Step 1: Understand method overriding and parent call

    Class B overrides greet() but calls parent::greet() which returns "Hello from A".
  2. Step 2: Concatenate parent result with " and B"

    The child method returns the parent's string plus " and B", so the full string is "Hello from A and B".
  3. Final Answer:

    Hello from A and B -> Option B
  4. Quick Check:

    parent::greet() + " and B" = "Hello from A and B" [OK]
Hint: parent::method() returns parent's output, can concatenate [OK]
Common Mistakes:
  • Ignoring parent:: call and expecting only child's string
  • Thinking it causes an error
  • Confusing output with only parent's or only child's string
4. Identify the error in this PHP code:
class ParentClass {
  public function sayHi() {
    echo "Hi from parent";
  }
}

class ChildClass extends ParentClass {
  public function sayHi() {
    parent.sayHi();
    echo " and child";
  }
}

$obj = new ChildClass();
$obj->sayHi();
medium
A. Using dot (.) instead of scope resolution (::) to call parent method
B. Missing parentheses after method name
C. Child class cannot override parent methods
D. Parent class method is private

Solution

  1. Step 1: Check how parent method is called

    The code uses parent.sayHi(); which is invalid syntax in PHP.
  2. Step 2: Correct syntax uses scope resolution operator

    It should be parent::sayHi(); to call the parent method inside child.
  3. Final Answer:

    Using dot (.) instead of scope resolution (::) to call parent method -> Option A
  4. Quick Check:

    Use parent::method(), not parent.method() [OK]
Hint: Use ::, not . to call parent methods [OK]
Common Mistakes:
  • Using dot (.) operator for method calls
  • Forgetting parentheses after method name
  • Assuming private methods can be called by child
5. Given these classes, what will be the output?
class Base {
  protected function message() {
    return "Base message";
  }
}

class Derived extends Base {
  public function message() {
    return parent::message() . " extended";
  }
}

class MoreDerived extends Derived {
  public function message() {
    return parent::message() . " and more";
  }
}

$obj = new MoreDerived();
echo $obj->message();
hard
A. Base message extended and more
B. Base message and more
C. Error: Cannot access protected method
D. Base message extended

Solution

  1. Step 1: Trace method calls through inheritance

    MoreDerived::message() calls parent::message() which is Derived::message().
  2. Step 2: Derived::message() calls Base::message()

    Derived calls parent::message() which is Base::message() returning "Base message" and appends " extended".
  3. Step 3: Combine all returned strings

    So Derived returns "Base message extended" and MoreDerived appends " and more" resulting in "Base message extended and more".
  4. Final Answer:

    Base message extended and more -> Option A
  5. Quick Check:

    Chained parent calls build full string [OK]
Hint: Each parent:: call adds to string stepwise [OK]
Common Mistakes:
  • Expecting error due to protected method (allowed in child)
  • Ignoring chained parent calls
  • Assuming only base message prints
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