In the last chapter, we defined properties and methods on the class using the public keyword.
You can also define them using the protected
and private
keywords.
Both keywords prevent the properties and functions from being accessible outside the object.
Only the object itself can use each.
<?php
class Phone
{
private $number;
public function setNumber($number)
{
$this->number = $number;
}
}
We cannot set the number using $phone->number = '123-456-7890'
.
Instead, we can use the public method.
$phone = new Phone();
$phone->setNumber('123-456-7890');
Making an attribute or function private, gives you more control over the data in the object. For example, we could prevent a number being set if it starts with a 7.
class Phone2
{
private $number;
public function setNumber($number)
{
if (substr($number, 0, 1) !== '7') {
$this->number = $number;
}
}
}
The protected
and private
keywords work a little differently.
They both prevent functions and properties from being accessed outside an object.
However, a method or property marked protected
can still be accessed by a child class.
class Phone3
{
private $number;
protected $caller;
public function setNumber($number)
{
$this->number = $number;
}
}
In class Smartphone
, the caller
property is accessible because the parent class
has it marked as protected
. However, Smartphone
cannot access the number
property
because it is still listed as private.
class Smartphone extends Phone3
{
public function setCaller($caller)
{
$this->caller = $caller;
}
}