其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
小弟测试了一下parent,::,$this,self的分别!

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

作者:芝See菇Bi([email protected])

小弟测试了一下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()

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

 

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




相关文章

相关软件