php的self关键字和静态方法调用
来源:互联网 发布:行业分类数据库 mysql 编辑:程序博客网 时间:2024/05/17 02:23
今天白天在项目开发中遇到一个很诡异的问题,由于第三方没有PHP接口demo,我在封装一个第三方API接口调用的时候,构建一个PHP类,类里面包含了一个私有方法和多个公有静态方法,我在静态方法中都使用了那个私有方法,按照惯例,我在静态方法中使用的是$this方式调用,代码结构大概如下:
class myClass {public static function func(){// $this->tt() ; //错误,无法执行self::tt();} public static function func2(){// $this->tt() ; //错误,无法执行self::tt();} public static function func3(){// $this->tt() ; //错误,无法执行self::tt();} . . .private function tt(){}}
晚上吃晚饭的时候,都还在想这个问题,这是为什么? 看来想是不行的,那就动手吧,于是以下几行代码诞生了(哈哈~~~):
class myClass { private $myName = "goen\r\n"; private static $myNames="goens\r\n"; #public static function func(){ # //$this->tt() ; //错误,无法执行 # self::tt(); # } private function tt(){ echo "tt() function exec\r\n"; } private function tt2(){ echo "tt2 function exec\r\n"; } public function func_new(){ echo self::$myNames; self::tt(); self::tt2(); #echo $this->myName; #$this->tt(); #$this->tt2(); echo "test func new exec\r\n"; } }$myCls = new myClass();$myCls->func_new();#myClass::func();#myClass::func_new();
当然 ,功夫不负有心人,哈哈~~~,我通过代码反复测试,得出以下结论和大家分享:
- 1. php类中,静态方法调用当前类的非静态方法必须用self关键字,不能用$this
- 2. php类中,公有方法调用私有方法使用$this关键字,只能实例化调用
- 3. php类中,公有方法调用私有方法使用self关键字,此共有方法自动转化为静态方法
- 4. php类中,静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里
- 5. 实例化变量即可调用公有方法也可以调用静态方法
以上结论仅代表个人分析得出,欢迎高手指正
作者:gaorq
于2015.10.12晚
0 0
- php的self关键字和静态方法调用
- PHP static 关键字和 self 关键字实例化的区别
- php中非静态方法的静态调用
- PHP中this关键字和self的却别
- performSelector调用方法和直接self 调用方法的区别
- ios开发-OC类方法和self关键字的学习
- 一、类、对象、传值引用、$this关键字、静态属性和静态方法、self、构造方法、析构方法
- PHP this,self 和 parent 关键字 详解
- PHP this,self 和 parent 关键字 详解
- 关于php静态方法间的调用
- php关键字self与static的区别
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php面向对象中static静态属性和静态方法的调用
- php 静态方式调用非静态的方法
- 游戏系统开发笔记(二)——开发流程和项目管理
- 第7周项目1-建立顺序环形队列算法库
- linux命令(12)如何查看linux系统版本
- 游戏系统开发笔记(三)——通用代码库
- PIC单片机之按键错误汇总
- php的self关键字和静态方法调用
- iOS基础知识Day01
- 1009. Product of Polynomials
- 游戏系统开发笔记(四)——游戏程序简介
- 电路布线
- SNMP从入门到开发:基础篇
- ios学习之动画中JNWSpringAnimation第三方库
- 剑指offer—机器人的运动范围
- c# 几天的工作总结一下