php类中的this,self,parent this代表当前对象,self代表当前类,parent代表父类,这个解释很晦涩,下面结合例子具体说明一下self php类的定义和对象(实例)的存储是分开的,类的定义只有一份,实例可以有多个。self就代表类定义 类的定义主要包括方法(类的属性可以动态添加),不严谨的说,方法是属于类的,属性是属于对象的。 那么理论上通过类名就可以调用类的所有方法(包括静态,非静态,注意访问限制),包括继承来的,从这个角度来说self==当前类。 所以 通过self,类名可以调用本类的常规方法,静态方法,父类的方法(后记,如方法中用了this,会报运行时错误,但语法没有问题)
<pre name="code" class="php">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怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号