public vs protected vs private比較
Published in
3 min readApr 10, 2017
這是在php裡,最常看到三種宣告function的方式。
下面用code做個簡單解說:
class Test
{
public function public_function()
{
echo 'I am public function!';
}
protected function protected_function()
{
echo 'I am protected function!';
}
private function private_function()
{
echo 'I am private function!';
}
}
$test = new Test();
$test->public_function();
這三個宣告方式,如果要在class外面使用的話,只有public可以,因為public意思就是公眾化的,開放的,大家都可以任意取用的。
而protected則是要透過parent class的用法,也就是extends就能調用了:
class Test
{
public function public_function()
{
echo 'I am public function!';
}
protected function protected_function()
{
echo 'I am protected function!';
}
private function private_function()
{
echo 'I am private function!';
}
}
class Test2 extends Test
{
public function call_parents_function_protected()
{
$this->protected_function();
}
}
$test = new Test();
$test->public_function();
$test2 = new Test2();
$test2->call_parents_function_protected();
像這樣的方式,就能成功調用了!
至於private在所處的class裡面才能調用:
class Test
{
public function public_function()
{
echo 'I am public function!';
}
protected function protected_function()
{
echo 'I am protected function!';
}
private function private_function()
{
echo 'I am private function!';
}
public function call_in_same_class()
{
$this->private_function();
}
}
$test = new Test();
$test->call_in_same_class();
這樣就行了!
總結來說,public大家都能取用,protected則是父類別才能使用,private則是只能在宣告function的class裡面使用。
參考資料:
http://stackoverflow.com/questions/4361553/what-is-the-difference-between-public-private-and-protected