0

file1.php と file2.php という 2 つのファイルがあります。クラスフォームが定義されているフォームという名前のphpファイルが1つあります。次のように、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;

今、私はこのオブジェクト $form と $personal を別のファイル file2.php で使用したいと思います。これは次のとおりです。

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

これらのオブジェクトをphpで使用するにはどうすればよいですか。助けてください。

4

3 に答える 3

1

1 つの PHP ファイルを別のファイルにインクルードする場合、両方のコードがインクルード コードのスコープにマージされるため、問題はありません。

そうではなく、コード内の別の位置でオブジェクトを再利用したい場合は、レジストリを使用して( PHP でレジストリ パターンまたはシングルトンをテストするのは難しいですか?も参照してください)、インスタンス化されたオブジェクトを格納します。

次のページの読み込みで同じオブジェクトを再利用する場合は、それらをシリアル化する必要があります。シリアル化されたオブジェクトをセッション/キャッシュ (または別の場所) に保存し、次のページの読み込み後にシリアル化を解除します。その場合、データベース接続をセットアップしたり、その他の必要なタスクを実行したりするためのメカニズムも必要になります (を参照__wakeup())。

于 2012-07-19T08:53:31.793 に答える
0

最初にfile1.phpをインクルードします

次に、インスタンスを呼び出すだけです。

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

$formとのインスタンスは$personalfile1.phpにすでに作成されていることに注意してください

于 2012-07-19T08:48:56.977 に答える
0

通常、スクリプトを実行するたびに、オブジェクトの新しいインスタンスを作成する必要があります。

そうでない場合は、オブジェクトをシリアル化して文字列形式にし、必要に応じてシリアル化を解除できますが、文字列をどこかに保存する必要があります。通常は、新しいクラスを宣言する方が簡単です。


このようなほとんどの場合、オブジェクトを使用してデータベースの値を変更します。新しいインスタンスが作成されると (ページのリロード時)、データベースを参照して変更された値を取得します。このように、同じインスタンスがリロード間で持続する必要はありません。

クラスはゲッターとセッター (「アクセサー」と「修飾子」) を使用して、必要な値を操作します$address。たとえば、

于 2012-07-19T08:42:29.747 に答える