thinkphp5 控制器下public,protected,private三者的区别
public:公共 protected:继承 private:私有
请看示例
<?php namespace app\index\controller; use think\Controller; //Test父类 class TestFather extends Controller { public function aaa(){ return "这是TEST下public控制器"; } protected function bbb(){ return "这是TEST下protected控制器"; } private function ccc(){ return "这是TEST下private控制器"; } }
<?php namespace app\index\controller; //Test子类 class TestSon extends TestFather { public function ddd(){ return $this->aaa(); } public function eee(){ return $this->bbb(); } public function fff(){ return $this->ccc(); } }
<?php
namespace app\index\controller;
use think\Controller;
//毫不相干的Test类
class Test extends Controller
{
public function xxx(){
return $this->redirect('TestFather/aaa');
}
public function yyy(){
return $this->redirect('TestFather/bbb');
}
public function zzz(){
return $this->redirect('TestFather/ccc');
}
}
访问TestSon下的ddd函数,页面效果如下:
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708201852.png)
访问TestSon下的eee函数,页面效果如下:
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708201908.png)
访问TestSon下的fff函数,页面效果如下:
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708201948.png)
访问Test下的xxx函数,页面重定向到TestFatcher下的aaa
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708202832.png)
访问Test下的yyy函数,页面重定向到TestFatcher下的bbb,显示方法不存在
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708202853.png)
访问Test下的zzz函数,页面重定向到TestFatcher下的ccc,显示方法不存在
![](http://runtuchigua.cn/wp-content/uploads/2021/07/QQ截图20210708202913.png)
通过上面的测试,可以得出结论
public定义的函数能被任何类获取
protected定义的函数只能被继承的子类获取
private定义的函数只能本类获取