php self
程序员文章站
2022-05-25 19:31:22
...
php类中的this,self,parent this代表当前对象,self代表当前类,parent代表父类,这个解释很晦涩,下面结合例子具体说明一下self php类的定义和对象(实例)的存储是分开的,类的定义只有一份,实例可以有多个。self就代表类定义 类的定义主要包括方法(类的属性可以动态添加),不严谨的说,方法是属于类的,属性是属于对象的。 那么理论上通过类名就可以调用类的所有方法(包括静态,非静态,注意访问限制),包括继承来的,从这个角度来说self==当前类。 所以 通过self,类名可以调用本类的常规方法,静态方法,父类的方法(后记,如方法中用了this,会报运行时错误,但语法没有问题)
class A { public static $count=1; const N = 10; private $_a = "_a \n"; protected $_b = "_b \n"; public $c = "c \n"; public function n() { echo __METHOD__."\n"; } public function func() { echo __METHOD__." " .$this->c; } public static function f() { echo __METHOD__."\n"; } public static function fn() { echo __METHOD__." " .self::N."\n"; } } class B extends A { const N = 100; public static $count=1; public $p = "pp\n"; public function d() { echo __METHOD__." ".$this->p." \n"; } public function e() { self::n(); echo __METHOD__." \n"; } public static function f(){ self::e(); self::n(); echo __METHOD__."\n"; } public function func() { parent::func(); echo "func\n"; } } echo "=========B:e()=========\n"; B::e(); echo "=========B:n()=========\n"; B::n(); echo "=========B:f()=========\n"; B::f(); echo "=========B:d()=========\n"; B::d(); // 运行时错误error
以上就介绍了php self,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
推荐阅读
-
php将日期格式转换成xx天前的格式_PHP
-
解析用PHP读写音频文件信息的详解(支持WMA和MP3)_php技巧
-
php启动时候提示PHP startup的解决方法_PHP
-
(转)PHP缓存的兑现
-
php多次include后导致全局变量global失效的解决方法_PHP
-
PHP Fatal error: Call to undefined function bcmul()_PHP教程
-
php中JSON的使用方法,phpJSON使用方法_PHP教程
-
PHP与JSP上演超详细性能测试大PK(1)
-
PHP SESSION扫盲篇_PHP教程
-
php学习笔记 php中面向对象三大特性之一[封装性]的应用_PHP教程