php里parent,::和self的分别
来源:互联网 宽屏版 评论
2005-11-28 12:28:07
/*self的特点*/
class a
{...
public static $a1 ="我是类a";
function ca ()
{...
echo "这是类a:".self ::$a1 ;
//self的特点是:只能访问静态变量(static)
echo "";
//输出结果:a1
}
}$o =new a ;
$o ->ca ();
/*[dollar]this,parent的特点*/
class b
{...
public $b1 ="我是类b";
public static $b2 ="b2";
function cb ()
{...
echo "这是类b:". $this ->b1 ;
//最普通的访问方法;输出:b1
echo "";
echo $this ->b2 ;
//[dollar]this就不能访问static变量了;没有任何输出
}
}$b1 =new b ;
$b1 ->cb ();
class eb extends b
{...
function c ()
{...
echo "这是类eb,执行多一次类b了:".parent ::cb ();
echo "";
//parent的意思是指向extends的b类,和b::cb()一样,
//当然也可以使用b::cb()这样访问,但以后修改起来就会很麻烦
}
}$eb1 =new eb ;
$eb1 ->c ();
/*::的特点*/
class t1
{...
public $tt1 ="tt1";
function t1_fun ()
{...
echo "我不是类,只是函数.怎样?!这是在没有实例化对象情况下输出的!";
echo $this ->tt1 ;
//在对象没有实例时,这样的调用是错误的!
}
}t1 ::t1_fun ();
//这是::的特点,可以在没有实例对象时,就直接调用类里的函数,注意:纯粹是函数而已
[code]
/*self的特点*/
class a
{
public static $a1="我是类a";
function ca()
{
echo "这是类a:".self::$a1;//self的特点是:只能访问静态变量(static)
echo "
";//输出结果:a1
}
}
$o=new a;
$o->ca();
/*$this,parent的特点*/
class b
{
public $b1="我是类b";
public static $b2="b2";
function cb()
{
echo "这是类b:".$this->b1;//最普通的访问方法;输出:b1
echo "
";
echo $this->b2;//$this就不能访问static变量了;没有任何输出
}
}
$b1=new b;
$b1->cb();
class eb extends b
{
function c()
{
echo "这是类eb,执行多一次类b了:".parent::cb();
echo "
";
//parent的意思是指向extends的b类,和b::cb()一样,
//当然也可以使用b::cb()这样访问,但以后修改起来就会很麻烦
}
}
$eb1=new eb;
$eb1->c();
/*::的特点*/
class t1
{
public $tt1="tt1";
function t1_fun()
{
echo "我不是类,只是函数.怎样?!这是在没有实例化对象情况下输出的!";
echo $this->tt1;//在对象没有实例时,这样的调用是错误的!
}
}
t1::t1_fun();//这是::的特点,可以在没有实例对象时,就直接调用类里的函数,注意:纯粹是函数而已
[/code]