php如何:将会话变量保存到静态类变量中

php如何:将会话变量保存到静态类变量中,php,session,static,session-variables,Php,Session,Static,Session Variables,以下代码可以正常工作: <?php session_start(); $_SESSION['color'] = 'blue'; class utilities { public static $color; function display() { echo utilities::$color = $_SESSION['color']; }

以下代码可以正常工作:

<?php session_start();

   $_SESSION['color'] = 'blue'; 

   class utilities
   {
            public static $color;

        function display()
            {
                echo utilities::$color = $_SESSION['color'];
            }

   }
   utilities::display(); ?>

这是我想要的,但不起作用:

<?php session_start();

$_SESSION['color'] = 'blue'; 

class utilities  {  
     public static $color = $_SESSION['color']; //see here

     function display()     
     {      
         echo utilities::$color;    
     }   } utilities::display(); ?>

我得到这个错误:
Parse error:syntax error,在第7行的C:\Inetpub\vhosts\morsemfgco.com\httpdocs\secure2\scrap\class.php中出现意外的T_变量

Php不喜欢将会话变量存储在函数之外。为什么?这是一个语法问题还是什么?我不想实例化对象,因为只需调用实用程序函数,我需要全局存储一些会话变量。我也不想每次运行函数时调用
init()
函数来存储全局会话变量。解决方案?

来自:-

与任何其他PHP静态变量一样, 静态属性只能是 使用文本或 常数不允许使用表达式。 因此,虽然您可以初始化静态 属性设置为整数或数组(对于 实例),您不能对其进行初始化 到另一个变量,到一个函数 返回值,或返回到对象

您说您需要全局存储会话变量?它们是$\u会话被称为


在类中,只能在方法中使用会话

实际上,如果你想在一个类中做一些事情,你必须在一个方法中编码它

类不是函数。它有一些变量-作为属性-和一些函数-作为方法-您可以定义变量,您可以初始化它们。但是你不能在方法之外对它们做任何操作。。。 比如说

public static $var1; // OK!
public static $var2=5; //OK!
public static $var3=5+5; //ERROR
如果你想这样设置它们,你必须使用构造函数。。。(但请记住:在创建对象之前不会调用构造函数…)


ahh shoot,我在想什么呢?我不需要将它们存储在类中的任何位置,因为我可以在任何时候访问它们,而无需这样做。愚蠢的错误。。。我认为,太多的编码让我过度思考简单的问题。谢谢你引起我的注意。
public static $var1; // OK!
public static $var2=5; //OK!
public static $var3=5+5; //ERROR
<?php 
session_start();

$_SESSION['color'] = 'blue'; 

class utilities  {  

    public static $color;

    function __construct()
    {
        $this->color=$_SESSION['color'];
    }

    function display()     
    {          
        echo utilities::$color;  
    }
}
utilities::display(); //empty output, because constructor wasn't invoked...
$obj=new utilities();
echo "<br>".$obj->color;
?>