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;
?>