【问题标题】:PHP static variable as a result of another functionPHP静态变量作为另一个函数的结果
【发布时间】:2015-05-13 20:34:57
【问题描述】:

我正在尝试用一些静态变量定义一个 PHP 类。我正在尝试执行以下操作以避免使用全局变量。

class class_Name{
  private static $var1 = is_plugin_inactive('plugin/plugin.php'); //check if WordPress has this plugin active
  public static function doSomeStuff(){
    echo $var1;
  }
}
//init class
class_Name::doSomeStuff();

这总是让我在定义静态变量的那一行出现错误Parse error: syntax error, unexpected '(', expecting ',' or ';' in my_file.php

请帮忙。

【问题讨论】:

  • 类变量定义必须有常量表达式。尝试在函数中分配它。
  • 我需要在doSomeStuff 函数之外定义变量,以便可以在其他几个函数中使用它。谢谢
  • 好吧,你不能在那里做。
  • 错字。你打电话给doSomeStuff,但在课堂上的名字是doSomStuff
  • 已编辑,还有其他建议吗?

标签: php variables scope


【解决方案1】:

不确定你的具体情况,但你能做到吗:

class class_Name {
    private static $var1 = null;   

    //check if WordPress has this plugin active
    public static function doSomeStuff(){
        if(is_null(self::$var1))
            self::$var1 = is_plugin_inactive('plugin/plugin.php');
        echo self::$var1;
    }
}

基本上像你想要的那样调用函数,但如果它还没有初始化它?

【讨论】:

    【解决方案2】:

    如果你想在 $var1 中保存一个非常量表达式,你需要从一个方法中设置,例如一个 init 方法:

    class class_Name {
    
        private static $var1 = null;
    
        public static function init() {
            self::$var1 = is_plugin_inactive('plugin/plugin.php');
        }
    
        public static function doSomeStuff() {
            echo self::$var1;
        }
    
    }
    
    class_Name::init();
    
    class_Name::doSomeStuff();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2023-03-31
      • 2015-01-27
      • 2015-02-19
      • 2018-03-15
      相关资源
      最近更新 更多