Public Private Protected in PHP
Access Modifier allows you to alter the visibility of any class member(properties and method).
In php 5 there are three scopes for class members.
- Public
- Protected and
- Private
Public Access modifier
Public access modifier is open to use and access inside the class definition as well as outside the class definition.
<?php
class demo
{
public $name="ravish";
function disp()
{
echo $this->name."<br/>";
}
}
class child extends demo
{
function show()
{
echo $this->name;
}
}
$obj= new child;
echo $obj->name."<br/>";
$obj->disp();
$obj->show();
?>
Output
ravish
ravish
ravish
In the above example
Create a demo class with a public property $name and method disp( ).
create a child class of demo class(using inheritance) with a method show( ).
inside show( ) method of child class call the global property of parent class(demo).
Now create the object of child class, call its own method show(), its parent class method disp( ) and parent class property $name.
Protected access modifier
Protected is only accessible within the class in which it is defined and its parent or inherited classes.
<?php
class demo
{
protected $x=500;
protected $y=500;
function add()
{
echo $sum=$this->x+$this->y."<br/>";
}
}
class child extends demo
{
function sub()
{
echo $sub=$this->x-$this->y."<br/>";
}
}
$obj= new child;
$obj->add();
$obj->sub();
?>
Output
1000
0
Private access modifier
Private is only accessible within the class that defines it.( it can't be access outside the class means in inherited class).
<?php
class demo
{
private $name="shashi";
private function show()
{
echo "This is private method of parent class";
}
}
class child extends demo
{
function show1()
{
echo $this->name;
}
}
$obj= new child;
$obj->show();
$obj->show1();
?>
Output
Fatal error: Call to private method demo::show()
use of all access modifier in a single example
Create a parent class with public, private and protected properties and try to access these properties with their child class.
Eg(summary)
<?php
class parents
{
public $name="shashi";
protected $profile="developer";
private $salary=50000;
public function show()
{
echo "Welcome : ".$this->name."<br/>";
echo "Profile : ".$this->profile."<br/>";
echo "Salary : ".$this->salary."<br/>";
}
}
class childs extends parents
{
public function show1()
{
echo "Welcome : ".$this->name."<br/>";
echo "Profile : ".$this->profile."<br/>";
echo "Salary : ".$this->salary."<br/>";
}
}
$obj= new childs;
$obj->show1();
?>
Output
Welcome : shashi
Profile : developer
Salary :