Php 类中的访问会话变量

Php 类中的访问会话变量,php,session,variables,Php,Session,Variables,当需要检索或保留会话值时,在类构造函数上使用会话启动是否正常?最佳实践 除非从uu construct调用Session_start,否则无法从类中检索会话变量 session_start(); if(isset($_REQUEST['siteid'])){ $siteid = $_REQUEST['siteid']; $_SESSION['siteid'] = $siteid; echo $siteid; }else{ $siteid = ""; }

当需要检索或保留会话值时,在类构造函数上使用会话启动是否正常?最佳实践

除非从uu construct调用Session_start,否则无法从类中检索会话变量

session_start();    

if(isset($_REQUEST['siteid'])){
    $siteid = $_REQUEST['siteid'];
    $_SESSION['siteid'] = $siteid;
    echo $siteid;
}else{
    $siteid = "";
}
require_once 'common/lib_constant.php';
require_once 'common/database.php';
require_once 'common/common.class.php';
$commonClass = new commonClass();

最佳实践是从引导启动会话。
会话本身通过某种智能包装类进行访问(参见ZF的示例)。
这样,您应该100%确保代码中不会出现标题问题和重复的会话启动调用。

一个类可以被实例化多次/request…引导程序只运行一次/request。

您应该使用包装器对象来访问会话变量,该对象在它处理的第一个请求上调用
session\u start()
,然后保存一个标志,表示这已经完成,或者它调用
session\u start()
仅在其构造函数中

您可以使用单例模式或所谓的依赖项注入,即不管原始名称如何,只将对(调用它)
$Session
对象的引用传递给每个需要它的对象

会话
对象应该只存在一个实例