2010-01-11 25 views
5

Soy nuevo en OOP y estoy escribiendo una de mis primeras clases. Trabajo para un corredor de seguros y estoy tratando de usar una Clase para almacenar cosas sobre una cotización, y almacenar el Objeto como una variable de sesión.Almacenar un objeto PHP en una variable de sesión

La cosa es que cuando veo las variables de sesión, me sale:

sessionName   

__PHP_Incomplete_Class Object 
(
    [__PHP_Incomplete_Class_Name] => myClass 
    [brokerId] => 

¿Puede alguien decirme por qué se muestre el nombre de clase incompleto?

Respuesta

5

Asegúrese de que la definición de clase esté presente antes de llamar a session_start(), p.

require_once 'class.MyClass.php'; 
session_start(); 

o establecer una unserialize_callback_func que intentará cargar la definición de clase como se describe en http://docs.php.net/function.unserialize.

editar: esto también se puede hacer a través de spl_autoload_register(). P.ej.

spl_autoload_register(function($name) { 
    // only a demo ...this might be insecure ;-) 
    require_once 'class.'.$name.'.php'; 
}); 
session_start(); 
echo '<pre>'; 
var_dump($_SESSION); 
echo '</pre>'; 
+0

Esto es correcto, olvidar lo que había respondido :) – soulmerge

1

Me las arreglé para arreglarlo solo, no estoy seguro de cómo.

me aseguró que la página donde se presentan los valores se estructuró como:

require_once("Class.php"); 
session_start(); 

$_SESSION['myObject']->printVariables(); 

Y que la página de la construcción del objeto era como:

# Include the class 
require_once($_SERVER['DOCUMENT_ROOT'] . "/Class.php"); 

# Instantiate a new policy 
$_SESSION['myObject'] = new quote('54'); 
$_SESSION['myObject']->printVariables(); 

que también se aseguró de que la página donde se presentan llamando al objeto no usó ninguna función de serialización, ya que parecían causar solo errores.

0

estoy usando este

if (!is_object($_SESSION)) $_SESSION = new ArrayObject(); 
Cuestiones relacionadas