我有两个文件说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中使用这些对象。请帮忙。
答案 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中创建