干草伙计们。我对PHP中的OOP有点新意。我学会了如何编写和创建对象。有没有办法获取一个对象并将其传递给另一个脚本?使用GET或POST或SESSION等等。如果没有如何在一个页面上为一个对象分配一些变量,那么在另一个页面上为同一个对象分配更多变量?
由于
答案 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”。
这是什么意思?
一个简单的例子:
include_once('Authentication.php')
并从此文件中启动一个类,例如<?php $Auth = new Auth_Handler; ?>
这将使auth类也可以在index.php或您要包含此类的任何其他文件中使用。
如果要将身份验证类的返回值传递给另一个文件,例如'register.php'你可以使用SESSION或任何其他缓存。
由于尺寸的原因,不建议通过整个物体。
在文件开头包含和启动所需的类要好得多。
并且通过SESSION传递的回报占用的空间更少。这实际上取决于您要使用哪个框架或API,或者您想要创建的项目。