Created
April 11, 2017 16:47
-
-
Save nixon1333/d7928af5544d3bda487ad90dd305b405 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
//=============================== | |
// property visibility | |
//=============================== | |
/** | |
* Define MyClass | |
*/ | |
class MyClass | |
{ | |
public $public = 'Public'; | |
protected $protected = 'Protected'; | |
private $private = 'Private'; | |
function printHello() | |
{ | |
echo $this->public; | |
echo $this->protected; | |
echo $this->private; | |
} | |
} | |
$obj = new MyClass(); | |
echo $obj->public; // Works | |
echo $obj->protected; // Fatal Error | |
echo $obj->private; // Fatal Error | |
$obj->printHello(); // Shows Public, Protected and Private | |
/** | |
* Define MyClass2 | |
*/ | |
class MyClass2 extends MyClass | |
{ | |
// We can redeclare the public and protected properties, but not private | |
public $public = 'Public2'; | |
protected $protected = 'Protected2'; | |
function printHello() | |
{ | |
echo $this->public; | |
echo $this->protected; | |
echo $this->private; | |
} | |
} | |
$obj2 = new MyClass2(); | |
echo $obj2->public; // Works | |
echo $obj2->protected; // Fatal Error | |
echo $obj2->private; // Undefined | |
$obj2->printHello(); // Shows Public2, Protected2, Undefined | |
//=============================== | |
// method visibility | |
//=============================== | |
/** | |
* Define MyClass | |
*/ | |
class MyClass | |
{ | |
// Declare a public constant | |
public const MY_PUBLIC = 'public'; | |
// Declare a protected constant | |
protected const MY_PROTECTED = 'protected'; | |
// Declare a private constant | |
private const MY_PRIVATE = 'private'; | |
public function foo() | |
{ | |
echo self::MY_PUBLIC; | |
echo self::MY_PROTECTED; | |
echo self::MY_PRIVATE; | |
} | |
} | |
$myclass = new MyClass(); | |
MyClass::MY_PUBLIC; // Works | |
MyClass::MY_PROTECTED; // Fatal Error | |
MyClass::MY_PRIVATE; // Fatal Error | |
$myclass->foo(); // Public, Protected and Private work | |
/** | |
* Define MyClass2 | |
*/ | |
class MyClass2 extends MyClass | |
{ | |
// This is public | |
function foo2() | |
{ | |
echo self::MY_PUBLIC; | |
echo self::MY_PROTECTED; | |
echo self::MY_PRIVATE; // Fatal Error | |
} | |
} | |
$myclass2 = new MyClass2; | |
echo MyClass2::MY_PUBLIC; // Works | |
$myclass2->foo2(); // Public and Protected work, not Private | |
//more example http://php.net/manual/en/language.oop5.visibility.php | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment