php class中public,private,protected的区别,以及实例
2023-09-14 08:59:48 时间
一,public,private,protected的区别
public:权限是最大的,可以内部调用,实例调用等。
protected: 受保护类型,用于本类和继承类调用。
private: 私有类型,只有在本类中使用。
二,实例
echo $this- private; //private,内部可以调用 echo $this- protected; //protected,内部可以调用 $this- pri_function(); //private方法,内部可以调用 $this- pro_function(); //protected方法,内部可以调用 protected function pro_function(){ echo "you request protected function br "; private function pri_function(){ echo "you request private function br "; $test = test::tank(); echo $test- public; echo $test- private; //Fatal error: Cannot access private property test::$private echo $test- protected; //Fatal error: Cannot access protected property test::$protected $test- pub_function(); $test- pro_function(); //Fatal error: Call to protected method test::pro_function() from context $test- pri_function(); //Fatal error: Call to private method test::pri_function() from context
从上面的例子中,我们可以看出,
public: 可以class内部调用,可以实例化调用。
private: 可以class内部调用,实例化调用报错。
protected: 可以class内部调用,实例化调用报错。
protected function tank(){ //私有方法不能继承,换成public,protected if (!isset(self::$instance[get_class()])) $c = get_class(); self::$instance = new $c; return self::$instance; } public function pub_function() { echo "you request public function br "; echo $this- public; protected function pro_function(){ echo "you request protected function br "; echo $this- protected; private function pri_function(){ echo "you request private function br "; echo $this- private; class test1 extends test{ public function __construct(){ parent::tank(); parent::__construct(); public function tank(){ echo $this- public; echo $this- private; //Notice: Undefined property: test1::$private echo $this- protected; $this- pub_function(); $this- pro_function(); $this- pri_function(); //Fatal error: Call to private method test::pri_function() from context test1 public function pro_extends_function(){ echo "you request extends_protected function br "; public function pri_extends_function(){ echo "you request extends_private function br "; error_reporting(E_ALL); $test = new test1(); $test - tank(); //子类和父类有相同名字的属性和方法,实例化子类时,子类的中的属性和方法会盖掉父类的。
public: test中的public可以被继承。
private: test中的private不可以被继承。
protected: test中的protected可以被继承。
static: test中的static可以被继承。
唉,对于这些东西,老是不喜欢记着,用的时候,总感觉不对,又要去查,所以写个例子,方便自己查看。
相关文章
- ES聚合实例
- php中的curl使用入门教程和常见用法实例
- PHP如何自动识别第三方Restful API的内容,自动渲染成 json、xml、html、serialize、csv、php等数据
- 配置php.ini实现PHP文件上传功能
- PHP Socket编程 之 php实现http服务
- PHP Socket编程 之 php中连接tcp服务的三种方式
- php递归方法实现无限分类实例
- 以源码编译的方式安装PHP与php-fpm
- Java Cache-EHCache系列之计算实例占用的内存大小(SizeOf引擎)
- python 排序算法总结及实例详解
- java 发送邮件实例
- php实现手机定位功能的实例
- Linux平台单实例数据库安装
- snoopy 强大的PHP采集类使用实例代码
- zTree树形菜单使用实例
- [php-src]Php扩展的内存泄漏处理思路
- 关于 Angular 应用 Components 和 Directives 的实例化问题
- [转]分享php中四种webservice实现的简单架构方法及实例
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- CentOS下yum安装PHP,配置php-fpm服务
- PHP memcache实现消息队列实例
- 一个实例彻底理解Transformer模型中的BLEU值评价指标
- Spring Hello World 实例
- 统计php程序运行时间及设置PHP最长运行时间
- 测试开发之Vue学习笔记-H5实例百度音乐