小弟测试了一下parent,::,$this,self的分别!

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

作者:芝See菇Bi(seebiQ@hotmail.com)

小弟测试了一下parent,::,$this,self的分别!

环境是apache2,php5.0.1,w2k

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();//这是::的特点,可以在没有实例对象时,就直接调用类里的函数,注意:纯粹是函数而已

?>

总结一下:

parent,self,都只能访问static变量(属性)

parent,能访问父类的方法

self,指的是类本身

::可以在没有实例对象前调用类的方法(函数),但该方法中,不能$this访问变量

$this不能访问static变量,结果会没有输出

这是在PHP5版本里的情况,在PHP4里有点不同,有些也不能用!

只是有些地方不一样而已,这些"不一样"可能很容易给初学者弄混,容易走弯路!

希望小弟的这些分析对大家有用!

有这样的分析,是因为看到有些例子把这几种东东都放在一起使用,

有时:

$this->str1;

有时:

self::$str1;

又有时:

a::b();

更有时:

parent::b()

小弟就给这些东东搞到有点混乱,所以特写这篇文章来说一下,不想有别的也想我那样搞到有点乱!

希望没误人子弟!

小弟也是第一次写文章,也是第一次写技术性文章!期盼着大家对我能诚恳的批评!谢谢! :) :)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航