0

私は OOP プログラミングで遊んでいて、アドバイスを使用できるハードルにぶつかりました。

クラスをネストしている状況があります。people という配列を含む「Company」クラスがあります。この配列には、「Person」クラスのインスタンスが多数含まれています。

「会社」と「個人」の両方のデータはデータベース内に保存され、関連するクラスは必要に応じてそのデータベースから情報を取得します。

私の質問は非常に単純です:「どの時点でデータベースに接続しますか?」やるべきこと:- a) PHP ページで最初に接続してから、その接続を "Company" のインスタンスに渡して使用します。b)ユーザー名、パスワードなどを「Company」クラスに直接入れて、そこに接続します。

後者はデータベースへの複数の接続を作成するだろうと思っていたでしょう - 「会社」のインスタンスごとに1つ - おそらく答えは「A」です。しかし、そのクラスを別の開発者に渡す場合 (これは単なる学習課題であるため、私が行う予定ではありません)、彼は自分でデータベースに接続する必要があり、私のクラスが彼のためにそれを行うことを許可しません。 .

どちらの場合でも、接続は「Person」クラスの各インスタンスに自動的に渡されますか、それとも新しいインスタンスを作成するたびに接続を渡す必要がありますか?

私はこれについていくつかの調査を行いましたが、答えは「A」 (PHP ページでデータベースに接続し、Company クラスの各インスタンスに接続を渡す) だと思いますが、取得する前に再確認する必要があると思いました。遠すぎる。

あなたが提供できるアドバイスをありがとう。

4

2 に答える 2

1

あなたの解決策A)私にはなじみがあるように聞こえます。このようにして、データベース接続をオブジェクトに渡すか、接続オブジェクト(PDOなど)を格納するためのグローバルレジストリを維持することができます。

于 2012-06-13T16:37:49.870 に答える
0

あなたは正しい方向に進んでいると思います。

あなたが説明していることは依存性注入として知られており、それを使用することは一般的に良い考えです。

より複雑なプロジェクトを扱っている場合は、データの取得を完全に抽象化することをお勧めします。関連するレコードの検索と取得のみを処理するインターフェース、つまり「PersonFinder」または「CompanyFinder」を作成します。このインターフェイスの具体的な実装には、データベースルックアップ、CSVファイルルックアップ、またはある種のWebベースのサービスルックアップが含まれる場合があります。Finderを作成するときに、CompanyオブジェクトまたはPersonオブジェクトに渡します。

このようにして、レコードを処理するコードを変更せずに、レコードの検索方法を簡単に変更できます。

于 2012-06-13T16:38:05.647 に答える