ここで私は危険な知識があります。PHPオブジェクトの作成エンドレスループ
私は相互に関連するさまざまな種類のWebアプリケーションを開発中です。たとえば、 "Item"クラスと "User"クラスがあります。 "Item"クラスには、 "User"オブジェクトを参照する "Owner"というプロパティがあります。同様に、 "User"クラスには、 "Item"オブジェクトを保持している(それを推測した)配列である "Items_array"というプロパティがあります。
オブジェクトは自動的に参照として返されるため、fetch_item、fetch_userなどの関数があります。これらはオブジェクトのマスター配列を追跡し、既に存在する場合は正しい配列を返し、新しいものを作成しますそれが存在しなければ。以下は、例えば、ユーザーを取得するためのコードです。
public function get_user ($userID) {
if (!isset ($this->users_arr[$userID]))
$this->users_arr[$userID] = new User($userID);
return $this->users_arr[$userID];
}
私のItemsクラスには、問題なくユーザーオブジェクトを格納するプロパティがあります。今朝私はItemオブジェクトを格納するUserクラスにいくつかのプロパティを追加しましたが、今は 'Unable to open database connection'エラーが発生しています。私はこれをItemオブジェクトの作成に分離しました。すべてがうまく動作するとコメントしています。私は、参照を使用するのではなく、アイテムがユーザーを作成していて、アイテムを再作成しようとする無限ループを作成していると確信しています。
これは意味がありますか?誰かがこれまでにこのようなことに就いたり、問題を解決する方法について考えていますか?
'get_user()'を呼び出すようなコードを投稿してください –
'__construct()'メソッドを利用していますか?そうでない場合、新しいオブジェクトを作成することは、定義内のスカラーによってのみプロパティを設定することができるため、ループ内でループすることはありません。 –
あなたが記述したことは、おそらくデータベース接続エラーではなく、「メモリ不足」というエラーにつながります。データベースサーバーが実行されていますか? –