【问题标题】:Access a static variable from a class stored in a variable从存储在变量中的类访问静态变量
【发布时间】:2016-06-23 12:30:21
【问题描述】:

给定一个类:

class SomeClass{
     static $information = 'useful information';
}

我试图访问一组 php 类中的静态变量。每个类都有 $information 静态变量。如果我直接访问静态变量

echo SomeClass::$information;

程序输出信息,但是如果我尝试访问它并将其存储在一个变量中,我会收到一个错误,即“::”是意外的。

$class = SomeClass;
echo $class::$information;

将类存储在变量中的原因是我可以拥有一个可以创建用户数组或项目数组的函数。

【问题讨论】:

  • 为什么需要将类存储在变量中?这会给你带来什么。
  • 写一个静态函数 static function getInformation(){return $self::$information;} 因为 '::' 是意外的。 static function getInformation{return $self->$information;} 也没有,因为 $self 是非对象。
  • 一个可以创建多个类的实例的函数。例如创建用户数组或项目数组
  • 我认为问题出在我使用 PHP 5.3 的服务器这一事实中,所以我正在迁移项目以查看是否能解决问题并允许这些解决方案发挥作用。

标签: php class


【解决方案1】:
class SomeClass {
  public static $information = 'useful information';

  public static function getInformation() {
    return self::$information;
  }
} 

然后您可以执行以下操作:

# Static Access
echo SomeClass::$information;
echo SomeClass::getInformation();

# Static Access via Class Name in Variable
$someClass = 'SomeClass';
echo $someClass::$information;

## Instantiated access
$someClass = new SomeClass();
echo $someClass->$information;
echo $someClass->getInformation();

【讨论】:

    【解决方案2】:

    你可以这样做:

    $class = SomeClass::class;
    echo $class::$information;
    

    ::class 将类的完全限定名作为字符串获取。

    【讨论】:

    【解决方案3】:

    你不能在变量中存储对类的引用,这是没用的。

    您可以将类名存储在变量中并调用静态方法或变量:

    $class = 'SomeClass';
    echo $class::$information;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2012-09-06
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2012-06-29
      相关资源
      最近更新 更多