Bird
Raised Fist0
PHPprogramming~5 mins

Access modifiers (public, private, protected) in PHP - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Access modifiers (public, private, protected)
O(1)
Understanding Time Complexity

When using access modifiers in PHP, it's helpful to understand how they affect the way code runs.

We want to see how the choice of public, private, or protected changes the number of steps the program takes.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


class Example {
    private array $data;

    public function __construct(array $items) {
        $this->data = $items;
    }

    public function getItem(int $index) {
        return $this->data[$index];
    }
}

$example = new Example(range(1, 1000));
echo $example->getItem(500);
    

This code stores a list of items privately and allows public access to get one item by index.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Accessing an array element by index.
  • How many times: Each call to getItem accesses one element directly, no loops involved.
How Execution Grows With Input

Accessing an item by index takes the same steps no matter how big the array is.

Input Size (n)Approx. Operations
101
1001
10001

Pattern observation: The number of steps stays the same even if the list grows larger.

Final Time Complexity

Time Complexity: O(1)

This means accessing data with these modifiers takes a constant amount of time regardless of the data size.

Common Mistake

[X] Wrong: "Using private or protected makes data access slower because it restricts visibility."

[OK] Correct: Access modifiers control who can see or change data, but they do not add extra steps when accessing data inside the class.

Interview Connect

Understanding how access modifiers affect code helps you write clear and efficient programs, a skill valued in many coding challenges and real projects.

Self-Check

"What if the getItem method used a loop to find the item instead of direct access? How would the time complexity change?"

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