public vs protected vs private比較

Chih Hong, Chen
Hong’s Technical Blogs
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

--

--