Bird
Raised Fist0
PHPprogramming~10 mins

Access modifiers (public, private, protected) in PHP - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to declare a public property in the class.

PHP
<?php
class Car {
    [1] $color;
}
?>
Drag options to blanks, or click blank then click option'
Apublic
Bprivate
Cprotected
Dstatic
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'private' or 'protected' instead of 'public' for properties meant to be accessed outside.
2fill in blank
medium

Complete the code to declare a private method inside the class.

PHP
<?php
class User {
    [1] function setPassword($pass) {
        // code here
    }
}
?>
Drag options to blanks, or click blank then click option'
Afinal
Bpublic
Cprotected
Dprivate
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'public' or 'protected' when the method should be private.
3fill in blank
hard

Fix the error in the code by choosing the correct access modifier for the property.

PHP
<?php
class BankAccount {
    [1] $balance = 0;

    public function getBalance() {
        return $this->balance;
    }
}
?>
Drag options to blanks, or click blank then click option'
Apublic
Bprivate
Cprotected
Dvar
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'public' allows direct access which is unsafe for sensitive data.
4fill in blank
hard

Fill both blanks to declare a protected property and a public method to access it.

PHP
<?php
class Employee {
    [1] $salary;

    [2] function getSalary() {
        return $this->salary;
    }
}
?>
Drag options to blanks, or click blank then click option'
Aprotected
Bprivate
Cpublic
Dstatic
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'private' for the property when subclass access is needed.
Not making the method public to allow outside access.
5fill in blank
hard

Fill all three blanks to declare a private property, a protected method, and a public method.

PHP
<?php
class Document {
    [1] $content;

    [2] function editContent($newContent) {
        $this->content = $newContent;
    }

    [3] function readContent() {
        return $this->content;
    }
}
?>
Drag options to blanks, or click blank then click option'
Aprivate
Bprotected
Cpublic
Dfinal
Attempts:
3 left
💡 Hint
Common Mistakes
Using public for the property exposes it directly.
Making editContent public when it should be protected.

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