将对象从1页移动到另一页?

时间:2009-10-13 14:11:07

标签: php oop session post get

干草伙计们。我对PHP中的OOP有点新意。我学会了如何编写和创建对象。有没有办法获取一个对象并将其传递给另一个脚本?使用GET或POST或SESSION等等。如果没有如何在一个页面上为一个对象分配一些变量,那么在另一个页面上为同一个对象分配更多变量?

由于

5 个答案:

答案 0 :(得分:19)

您可以在会话中存储对象,但在调用session_start()之前需要包含包含类定义的文件(或使用class autoloading并在启动会话之前进行设置)。例如:

在每个页面上:

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

//start session
session_start();

第1页:

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

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

后续页面:

$object = $_SESSION['object'];

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

答案 1 :(得分:3)

以下是关于Tom Haigh答案的自动加载示例:

开始会议之前:

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

session_start();

传递对象的页面:

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

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

接收对象的页面:

$object = $_SESSION['object'];

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

自动加载方法会在您从会话中检索数据时自动加载对象。

答案 2 :(得分:2)

您可以将对象存储在SESSION中。 您可以序列化对象并通过GET或POST。

如果您希望对象在整个网站上保留,那么SESSION可能是您最好的选择。

答案 3 :(得分:1)

您可以使用$ _SESSION。但它只适用于该会议。

答案 4 :(得分:1)

在多个'脚本'上使用object

首先,您必须确定您的OOP应用程序具有哪种结构。 如果您使用类似MVC pattern的内容,则不必使用SESSION或REQUEST,因为您可以将要使用的对象“插入”“one”。 这是什么意思?

一个简单的例子:

  1. 用户A进入您的网站index.php
  2. 现在您可以从静态index.html加载内容, 但是如果你想检查用户是否经过身份验证以查看特定内容,例如在“管理员登录”中,您可以使用include_once('Authentication.php')并从此文件中启动一个类,例如<?php $Auth = new Auth_Handler; ?> 这将使auth类也可以在index.php或您要包含此类的任何其他文件中使用。 如果要将身份验证类的返回值传递给另一个文件,例如'register.php'你可以使用SESSION或任何其他缓存。 由于尺寸的原因,不建议通过整个物体。 在文件开头包含和启动所需的类要好得多。 并且通过SESSION传递的回报占用的空间更少。
  3. 这实际上取决于您要使用哪个框架或API,或者您想要创建的项目。