Bird
Raised Fist0
PHPprogramming~10 mins

Access modifiers (public, private, protected) in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Access modifiers (public, private, protected)
Define Class with Members
↓
Access Modifier Check
↓
Public
↓
Accessible Anywhere
↓
Access Attempt
↓
Allowed or Error
This flow shows how PHP checks access modifiers when you try to use class members: public is open everywhere, protected is limited to class and subclasses, private only inside the class.
Execution Sample
PHP
<?php
class Box {
  public $width = 10;
  private $height = 20;
  protected $depth = 30;
}
$box = new Box();
echo $box->width;
echo $box->height; // error
?>
This code defines a class with public, private, and protected properties and tries to access them from outside the class.
Execution Table
StepActionMember AccessAccess ModifierAllowed?Output / Result
1Create object $box--YesObject created
2Access $box->widthwidthpublicYes10
3Access $box->heightheightprivateNoFatal error: Cannot access private property Box::$height
4Access $box->depthdepthprotectedNoFatal error: Cannot access protected property Box::$depth
💡 Execution stops at step 3 due to fatal error accessing private property from outside class.
Variable Tracker
VariableStartAfter Object CreationFinal
$box->widthundefined1010
$box->heightundefined2020
$box->depthundefined3030
Key Moments - 2 Insights
Why can I access the public property but get an error with private or protected?
Public properties are open to all code (see step 2 in execution_table). Private and protected restrict access: private only inside the class (step 3 error), protected inside class and subclasses (step 4 error).
What is the difference between private and protected?
Private means only the class itself can access the member. Protected allows access inside the class and any subclass. Both block outside access (see steps 3 and 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what happens when accessing $box->depth from outside the class?
AIt outputs nothing
BIt outputs 30
CIt causes a fatal error
DIt returns null
💡 Hint
Check step 4 in the execution_table where $box->depth is accessed.
At which step does the program stop due to an error?
AStep 3
BStep 2
CStep 4
DAfter all steps
💡 Hint
Look at the exit_note and step 3 in execution_table.
If $height was declared public instead of private, what would change in the execution_table?
AStep 4 would cause an error instead
BStep 3 would allow access and output 20
CStep 3 would still cause an error
DNo change at all
💡 Hint
Think about how public access works from the concept_flow and execution_table step 2.
Concept Snapshot
Access modifiers control visibility of class members:
- public: accessible anywhere
- protected: accessible in class and subclasses
- private: accessible only inside the class
Trying to access private or protected from outside causes errors.
Use modifiers to protect data and control access.
Full Transcript
This visual execution shows how PHP access modifiers work. We define a class with public, private, and protected properties. When we create an object and try to access these properties from outside, public works fine, but private and protected cause errors. Public means open to all code. Private means only the class itself can access. Protected means the class and its subclasses can access. Trying to access private or protected from outside the class causes fatal errors. This helps protect data inside objects and control how other code interacts with them.

Practice

(1/5)
1. Which access modifier allows a property or method to be accessed from anywhere, including outside the class?
easy
A. public
B. private
C. protected
D. static

Solution

  1. Step 1: Understand access levels

    Public means accessible from anywhere, private means only inside the class, protected means inside class and subclasses.
  2. Step 2: Match the description

    The question asks for access from anywhere, which matches public.
  3. Final Answer:

    public -> Option A
  4. Quick Check:

    Public = accessible anywhere [OK]
Hint: Public means open to all code everywhere [OK]
Common Mistakes:
  • Confusing private with public access
  • Thinking protected is accessible outside class
  • Mixing static with access modifiers
2. Which of the following is the correct way to declare a private property named $data in a PHP class?
easy
A. private $data;
B. public $data;
C. protected $data;
D. var $data;

Solution

  1. Step 1: Recall PHP property declaration syntax

    Access modifiers come before the variable name with a dollar sign, e.g., private $data;
  2. Step 2: Identify private declaration

    Only private $data; uses 'private' correctly before the variable.
  3. Final Answer:

    private $data; -> Option A
  4. Quick Check:

    private property syntax = private $data; [OK]
Hint: Use 'private' keyword before $variable for private property [OK]
Common Mistakes:
  • Using 'var' instead of access modifiers
  • Forgetting the dollar sign before variable
  • Mixing public or protected when private is needed
3. What will be the output of the following PHP code?
class Test {
    private $secret = 'hidden';
    public function reveal() {
        return $this->secret;
    }
}
$obj = new Test();
echo $obj->reveal();
medium
A. secret
B. Error: Cannot access private property
C. null
D. hidden

Solution

  1. Step 1: Understand private property access inside class

    Private properties can be accessed inside class methods using $this->property.
  2. Step 2: Check method reveal() returns private property

    The reveal() method returns $this->secret, which is 'hidden'. So echo prints 'hidden'.
  3. Final Answer:

    hidden -> Option D
  4. Quick Check:

    Private accessed inside class method = allowed [OK]
Hint: Private properties accessible inside class methods [OK]
Common Mistakes:
  • Thinking private properties can't be accessed even inside class
  • Expecting error when accessing private inside class
  • Confusing property name with string output
4. Identify the error in this PHP code:
class ParentClass {
    protected $value = 10;
}

class ChildClass extends ParentClass {
    public function getValue() {
        return $this->value;
    }
}

$obj = new ParentClass();
echo $obj->value;
medium
A. Syntax error in class declaration
B. ChildClass cannot extend ParentClass
C. Cannot access protected property from outside the class
D. No error, outputs 10

Solution

  1. Step 1: Understand protected property access

    Protected properties can be accessed inside the class and child classes, but not from outside.
  2. Step 2: Check code usage

    The code tries to echo $obj->value where $obj is ParentClass instance, accessing protected property from outside, causing error.
  3. Final Answer:

    Cannot access protected property from outside the class -> Option C
  4. Quick Check:

    Protected outside class = error [OK]
Hint: Protected properties not accessible outside class or children [OK]
Common Mistakes:
  • Trying to access protected property directly from object
  • Confusing protected with public
  • Assuming no error when accessing protected externally
5. Given the following PHP classes, what will be the output?
class Base {
    private $data = 'base';
    protected $info = 'protected info';
    public function getData() {
        return $this->data;
    }
}

class Derived extends Base {
    public function getInfo() {
        return $this->info;
    }
    public function getDataFromBase() {
        return $this->data;
    }
}

$obj = new Derived();
echo $obj->getData() . ' & ' . $obj->getInfo() . ' & ' . $obj->getDataFromBase();
hard
A. base & protected info & base
B. base & protected info & Error accessing private property
C. Error accessing private property & protected info & base
D. Error accessing private property & Error accessing protected property & Error

Solution

  1. Step 1: Analyze private property access in Derived

    Private property $data is only accessible inside Base class. Derived cannot access $this->data directly.
  2. Step 2: Check method calls and outputs

    getData() returns $data from Base (allowed), getInfo() returns protected $info (allowed in Derived), getDataFromBase() tries to access private $data directly (causes error).
  3. Final Answer:

    base & protected info & Error accessing private property -> Option B
  4. Quick Check:

    Private inaccessible in child = error [OK]
Hint: Private properties not accessible in child classes [OK]
Common Mistakes:
  • Assuming private properties are inherited and accessible
  • Confusing protected with private access
  • Expecting no error when accessing private from child
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