2009-10-13 766 views
9

Hay chicos. Soy un poco nuevo en OOP en PHP. Aprendí a escribir y crear objetos. ¿Hay alguna manera de tomar un objeto y pasarlo a otro script? ya sea usando GET o POST o SESSION o lo que sea. Si no hay cómo asignaré un objeto a algunas variables en una página, entonces asigne el mismo objeto a más variables en otra página.mover el objeto de 1 página a otra?

Gracias

Respuesta

14

Puede almacenar objetos en la sesión, pero debe incluir el archivo que contiene la definición de clase antes de llamar a session_start() (o use class autoloading y configúrelo antes de iniciar la sesión). Por ejemplo:

En cada página:

//include class definition 
require('class.php'); 

//start session 
session_start(); 

primera página:

$object = new class(); 
$object->someProperty = 'hello'; 

//store in session 
$_SESSION['object'] = $object; 

Las páginas siguientes:

$object = $_SESSION['object']; 

//add something else, which will be stored in the session 
$object->anotherPropery = 'Something'; 
+0

Gracias! Ejemplo perfecto. Además, no sabía sobre el método __autoload. – dotty

1

Puede usar $ _SESSION. pero solo será para esa sesión.

2

Puede almacenar el objeto en una SESIÓN. Puede serializar el objeto y pasar por GET o POST.

Si desea que el objeto persista en todo el sitio, entonces SESSION es probablemente su mejor opción.

+0

Gracias, parece que las SESIONES son la mejor opción – dotty

1

Utilizando un object en varios 'guiones':

Primero, debe decidir qué tipo de estructura tiene su aplicación OOP. Si usa algo como MVC pattern, no tiene que hacerlo utilizando SESSION o REQUEST, porque puede "enchufar" los objetos que desea utilizar en "uno". ¿Qué significa esto?

Un ejemplo rápido:

  1. usuario A entra en su sitio index.php
  2. Ahora se puede cargar el contenido de un index.html estática, pero si usted quiere comprobar si el usuario está autenticado para ver contenidos específicos, por ejemplo el 'Inicio de sesión de administrador', puede usar include_once('Authentication.php') e iniciar una clase desde este archivo, p. <?php $Auth = new Auth_Handler; ?> Esto hará que la clase Auth también esté disponible en index.php o en cualquier otro archivo que desee incluir en esta clase. Si desea pasar el valor de retorno de la clase de autenticación a otro archivo, p. 'register.php' puede usar la SESIÓN o cualquier otra Caché. No se recomienda pasar objetos enteros debido a su tamaño. Incluir e iniciar las clases deseadas al principio de los archivos es mucho mejor. Y pasar los retornos por SESSION usa menos espacio.

Realmente depende de qué marco o API quieres usar, o qué proyecto deseas crear.

3

Aquí se muestra un ejemplo con carga automática con respecto a la respuesta de Tom Haigh:

Antes de empezar la sesión:

function __autoload($className) { 
    $file = PATH_TO_FOLDER_WITH_ALL_CLASS_FILES."/".$className.'.php'; 
    if(file_exists($file)) { 
     require_once $file; 
    } 
} 

session_start(); 

Página pasando el objeto:

$object = new class(); 
$object->someProperty = 'hello'; 

//store in session 
$_SESSION['object'] = $object; 

Página receptora el objeto:

$object = $_SESSION['object']; 

//add something else, which will be stored in the session 
$object->anotherPropery = 'Something'; 

El método de autocarga cargará automáticamente los objetos mientras recupera los datos de la sesión.

Cuestiones relacionadas