试图从另一个类中的一个类访问数据

时间:2014-04-03 22:06:35

标签: php oop

尝试从侧面静态方法中的一个方法获取一些数据(在其他类中使用它),但是当不在...中的对象上下文中时,我得到了“使用$”。错误。

下面是一个基本的例子

class mClass{

   public $someVar = 'Hello world...';

   public function passFunc(){
      $give = $this->someVar;
      return $give;
   }

   public static function showFunc(){
      $show = self::passFunc();
      return $show;
   }
}

mClass::showFunc();// show error: Using $this when not in object context in...

2 个答案:

答案 0 :(得分:2)

使用静态变量时,不能使用$ this。 $ this是指向当前对象的指针,但静态变量属于class。

答案 1 :(得分:0)

类方法(或静态函数)并不与您班级的特定实例相关联,即尽管$this可用,但它没有self

类方法可以访问静态属性或方法,但访问类中的任何其他内容都会引发错误。最好将静态方法看作是组织函数的一种方法;因此,它们在外部函数和实例方法之间操作。

在您的情况下,您必须在静态方法中创建一个实例:

public static function showFunc()
{
    $o = new self;
    $show = $o->passFunc();

    return $show;
}