W3docs

What is the difference between public, private, and protected?

In PHP, public, private, and protected are access modifiers that control the visibility of class properties and methods.

In PHP, public, private, and protected are access modifiers that control the visibility of class properties and methods.

  • public properties and methods can be accessed from anywhere, inside or outside the class.
  • private properties and methods can only be accessed from within the class.
  • protected properties and methods can be accessed from within the class or from a subclass (a class that extends the original class).

Here's an example:

Example of public, private, and protected access modifiers in a PHP class

<?php

class MyClass
{
    public $public_property = 'I am public';
    private $private_property = 'I am private';
    protected $protected_property = 'I am protected';

    public function publicMethod()
    {
        // can access all properties and methods
    }

    private function privateMethod()
    {
        // can only access private properties and methods
    }

    protected function protectedMethod()
    {
        // can access protected properties and methods, as well as public properties and methods
    }
}

$obj = new MyClass();

echo $obj->public_property; // outputs 'I am public'
echo $obj->private_property; // generates an error
echo $obj->protected_property; // generates an error

$obj->publicMethod(); // can be called
$obj->privateMethod(); // generates an error
$obj->protectedMethod(); // generates an error

Keep in mind that you cannot use private or protected access modifiers on properties or methods declared at the top level of a PHP script. They can only be used inside a class.