Access modifiers control who can use or change parts of your code. They help keep your code safe and organized.
Access modifiers (public, private, protected) in PHP
class ClassName { public $publicVar; private $privateVar; protected $protectedVar; public function publicMethod() {} private function privateMethod() {} protected function protectedMethod() {} }
public means anyone can access.
private means only inside the class can access.
protected means inside the class and child classes can access.
<?php class Car { public $color; private $engineNumber; protected $speed; public function setColor($c) { $this->color = $c; } private function setEngineNumber($num) { $this->engineNumber = $num; } protected function setSpeed($s) { $this->speed = $s; } }
greet is used inside child class method sayHello.<?php class ParentClass { protected function greet() { echo "Hello from Parent\n"; } } class ChildClass extends ParentClass { public function sayHello() { $this->greet(); } } $child = new ChildClass(); $child->sayHello();
secret is accessed only inside the class via a public method.<?php class Example { private $secret = "hidden"; public function reveal() { return $this->secret; } } $obj = new Example(); echo $obj->reveal();
This program shows how public, private, and protected properties and methods work. Public is accessed directly, private only inside the class, and protected inside the class and child classes.
<?php class Box { public $width; private $height; protected $depth; public function __construct($w, $h, $d) { $this->width = $w; $this->height = $h; $this->depth = $d; } public function getHeight() { return $this->height; } protected function getDepth() { return $this->depth; } } class BigBox extends Box { public function showDepth() { return $this->getDepth(); } } $box = new Box(10, 20, 30); echo "Width: " . $box->width . "\n"; echo "Height: " . $box->getHeight() . "\n"; $bigBox = new BigBox(15, 25, 35); echo "BigBox Depth: " . $bigBox->showDepth() . "\n";
Trying to access private or protected properties directly from outside the class will cause an error.
Protected members are useful when you want child classes to use or change something but keep it hidden from the outside.
Use public for things meant to be used freely, private for things to hide completely, and protected for things shared with child classes.
Access modifiers control who can see or change parts of your code.
Public means anyone can access, private means only inside the class, protected means inside the class and child classes.
They help keep your code safe and organized by hiding details you don't want changed directly.
Practice
Solution
Step 1: Understand access levels
Public means accessible from anywhere, private means only inside the class, protected means inside class and subclasses.Step 2: Match the description
The question asks for access from anywhere, which matches public.Final Answer:
public -> Option AQuick Check:
Public = accessible anywhere [OK]
- Confusing private with public access
- Thinking protected is accessible outside class
- Mixing static with access modifiers
$data in a PHP class?Solution
Step 1: Recall PHP property declaration syntax
Access modifiers come before the variable name with a dollar sign, e.g., private $data;Step 2: Identify private declaration
Only private $data; uses 'private' correctly before the variable.Final Answer:
private $data; -> Option AQuick Check:
private property syntax = private $data; [OK]
- Using 'var' instead of access modifiers
- Forgetting the dollar sign before variable
- Mixing public or protected when private is needed
class Test {
private $secret = 'hidden';
public function reveal() {
return $this->secret;
}
}
$obj = new Test();
echo $obj->reveal();Solution
Step 1: Understand private property access inside class
Private properties can be accessed inside class methods using $this->property.Step 2: Check method reveal() returns private property
The reveal() method returns $this->secret, which is 'hidden'. So echo prints 'hidden'.Final Answer:
hidden -> Option DQuick Check:
Private accessed inside class method = allowed [OK]
- Thinking private properties can't be accessed even inside class
- Expecting error when accessing private inside class
- Confusing property name with string output
class ParentClass {
protected $value = 10;
}
class ChildClass extends ParentClass {
public function getValue() {
return $this->value;
}
}
$obj = new ParentClass();
echo $obj->value;Solution
Step 1: Understand protected property access
Protected properties can be accessed inside the class and child classes, but not from outside.Step 2: Check code usage
The code tries to echo $obj->value where $obj is ParentClass instance, accessing protected property from outside, causing error.Final Answer:
Cannot access protected property from outside the class -> Option CQuick Check:
Protected outside class = error [OK]
- Trying to access protected property directly from object
- Confusing protected with public
- Assuming no error when accessing protected externally
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();Solution
Step 1: Analyze private property access in Derived
Private property $data is only accessible inside Base class. Derived cannot access $this->data directly.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).Final Answer:
base & protected info & Error accessing private property -> Option BQuick Check:
Private inaccessible in child = error [OK]
- Assuming private properties are inherited and accessible
- Confusing protected with private access
- Expecting no error when accessing private from child
Ready to prove it?
Pass the test and this pattern moves unknown
