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

Posted

技术标签:

【中文标题】将对象从一页移动到另一页?【英文标题】:move object from 1 page to another? 【发布时间】:2010-12-06 08:09:03 【问题描述】:

嘿伙计们。我对 php 中的 OOP 有点陌生。我已经学会了如何编写和创建对象。有没有办法获取一个对象并将其传递给另一个脚本?使用 GET 或 POST 或 SESSION 或其他。如果没有我将如何在一个页面上为对象分配一些变量,然后在另一页面上为同一对象分配更多变量?

谢谢

【问题讨论】:

【参考方案1】:

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

在每一页上:

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

//start session
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';

【讨论】:

谢谢!完美的例子。我也不知道 __autoload 方法。【参考方案2】:

以下是关于 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';

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

【讨论】:

【参考方案3】:

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

如果您希望对象在整个站点中持续存在,那么 SESSION 可能是您最好的选择。

【讨论】:

谢谢,看来 SESSION 是最好的选择【参考方案4】:

您可以使用 $_SESSION。但它只适用于那个会话。

【讨论】:

【参考方案5】:

在多个“脚本”上使用object

首先,您必须确定您的 OOP 应用程序具有什么样的结构。 如果您使用MVC pattern 之类的东西,则不必使用 SESSION 或 REQUEST 来执行此操作,因为您可以将要使用的对象“插入”到“一个”中。 这是什么意思?

一个简单的例子:

    用户A进入你的站点index.php 现在您可以从静态 index.html 加载内容, 但是如果您想检查用户是否经过身份验证以查看特定内容,例如“管理员登录”,您可以使用include_once('Authentication.php') 并从此文件启动一个类,例如<?php $Auth = new Auth_Handler; ?> 这将使 Auth 类在 index.php 或您想要包含此类的任何其他文件中也可用。 如果您想将身份验证类的返回值传递给另一个文件,例如'register.php' 你可以使用 SESSION 或任何其他缓存。 由于它们的大小,不建议传递整个对象。 在文件开头包含和启动所需的类要好得多。 通过 SESSION 传递返回值会占用更少的空间。

这实际上取决于您要使用哪个框架或 API,或者您要创建什么项目。

【讨论】:

以上是关于将对象从一页移动到另一页?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单页应用程序中以角度将数据从一页传递到另一页

我可以将 Twig 块从一页过滤到另一页吗?

如何使用 StreamBuilder 从一页导航到另一页

将自定义事件表单从一页发送到另一页

我们如何在 GWT 中从一页导航到另一页

从一页切换到另一页