<?php /** * Define MyClass */ const PHP_BR = "<br/>"; const PHP_SPACE = " "; class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo $this->public, PHP_SPACE. __CLASS__,PHP_BR; echo $this->protected,PHP_SPACE. __CLASS__,PHP_BR; echo $this->private,PHP_SPACE. __CLASS__,PHP_BR; } } class sub extends MyClass{ public function __construct() { echo $this->public, PHP_SPACE.__CLASS__,PHP_BR; echo $this->protected,PHP_SPACE. __CLASS__,PHP_BR; echo $this->private ?? "private not access" , PHP_SPACE. __CLASS__,PHP_BR; } } $obj = new sub(); echo $obj->public,PHP_SPACE.'object',PHP_BR; // Works echo $obj->private ?? "object not access private" , PHP_SPACE. __CLASS__,PHP_BR; echo $obj->protected ?? "object not access protected" , PHP_SPACE. __CLASS__,PHP_BR; // Fatal Error $obj->printHello(); // Shows Public, Protected and Private
output:
Public sub
Protected sub
private not access sub
Public object
object not access private
object not access protected
Public MyClass
Protected MyClass
Private MyClass