问答详情
源自:4-5 数据访问-PHP面向对象编程

self不能用于访问类自身的属性这句话该怎么理解???

self不能用于访问类自身的属性这句话该怎么理解???

1 <?php

  2 class Child{

  3     public static $value='static value';

  4     public function test(){

  5         echo self::$value;

  6     } 

  7 }

  8 $obj= new Child();

  9 $obj->test();

 10 ?>

我写了小的程序试了下 ,$value作为类Child的属性,完全可以输出 static value    


提问者:大雄谁谁谁 2014-11-25 00:14

个回答

  • 慕尼黑5763311
    2015-01-14 16:46:12
    已采纳

    self可以用于输出自身类的静态属性,不能输出自身类的非静态属性。你输出的$value是静态属性,如果把static去掉,就不能用self来输出了

  • pocheung
    2018-01-03 21:42:05

    其实讲解的老师表达的意思应该是“自身的非静态属性”。

    注意区分this self static parent

    this self static用于类自身数据访问,parent用于父类数据访问

    对于属性,this可以访问非静态属性,self static parent用于静态属性。

    对于方法,this self parent可以访问静态、非静态方法,static可以访问静态方法。

    $this->   属性[动] + 方法[静/动];
    self::    属性[静] + 方法[静/动];
    parent::  属性[静] + 方法[静/动];
    static::  属性[静] + 方法[静];


  • 随便起哟个
    2016-04-11 11:25:16

    我也是对这句话理解有问题.

  • 扣子and
    2016-01-22 11:13:18

    应该再加一个 this伪变量作为对比 就比较容易理解了, this用于访问自身非静态属性 self用户访问静态属性

  • 柳树
    2014-12-17 00:14:31

    对于这句话,理解不能。