在php中为不同的文件使用相同的对象

时间:2012-07-19 08:39:33

标签: php

我有两个文件说file1.php和file2.php。我有一个名为form的php文件,其中定义了类表单。 我在file1.php中创建了一个对象,如下所示:

require_once('form.php');
$x=$_GET['field'];
$form = new Form("", ""); 
$personal = new Block("");

$address = new TextArea("address", $x, "", 3, 30); 
$personal->add($address);
$form->add($personal);
echo $form;

现在我想在另一个文件file2.php中使用这个对象$ form和$ personal,如下所示:

$personal = new Block("");
$name = new Text("name",$x);
$personal->add($name);
$form->add($personal);
echo $form;

我如何在php中使用这些对象。请帮忙。

3 个答案:

答案 0 :(得分:1)

如果在另一个中包含一个PHP文件,则没有问题,因为两者中的代码将合并到包含代码的范围。

否则,如果您希望我们重复使用代码中不同位置的对象,您可以使用registry(另请参阅:How is testing the registry pattern or singleton hard in PHP?)来存储实例化对象。

如果您打算在下一页加载时重新使用相同的对象,则需要对它们进行序列化,将序列化对象存储在会话/缓存(或其他位置)中,并在加载下一页后对其进行反序列化。在这种情况下,您还需要一些机制来设置数据库连接或执行其他所需任务(see: __wakeup())。

答案 1 :(得分:0)

通常,每次运行脚本时都必须为对象创建一个新实例。

如果没有,您可以序列化对象,将其置于字符串格式,然后在需要时将其反序列化,但您必须将字符串存储在某处。宣布一个新类通常更容易。


在大多数情况下,您将使用对象修改数据库中的值。创建新实例时(在页面重新加载时),它会查看数据库以获取修改后的值。这样,同一个实例不必在重新加载时保持不变。

您的课程将使用getter和setter(“访问者”和“修饰符”)来处理您需要的值 - 例如$address

答案 2 :(得分:0)

首先包含file1.php

然后只需调用实例:

require_once('file1.php');
$name = new Text("name",$x);
$personal->add($name);
$form->add($personal);
echo $form;

请注意,$form$personal的实例已在file1.php中创建