2012-01-31 16 views
0

私は現在、カスタムMysqlクラスを使用してdbにクエリを送信するショッピングカートで作業しています。このプロジェクトではPHP OOP - phpオブジェクトはMysql Object = Multiple Mysql Connectionを拡張しますか?

、私が使用する各オブジェクトのために、このMySQLのクラスを拡張することを計画:カテゴリー、製品、ショッピングカート。

私はこの1つのようなクラスを作成した場合:

class Catalog_Categories extends Mysql{} 

そして、このような、別の1:

class Catalog_Products extends Mysql{} 

はDBに接続するために同じMySQLオブジェクトを使用して、これらのクラスはありますか、彼らが使用していることを2つの別々の接続?

私は少し失われています。

ありがとうございます!

カール。

+1

各mysqlのクラスが別々の接続を表すべきで、あなただけの1 MySQLインスタンスを持っているし、あなたのCatalog_ *クラスにこのインスタンスを提供する静的クラスを記述する必要があります。 – Vyktor

+0

そのクイックヘルプをありがとう。とても感謝している! –

答えて

1

Mysqlクラスでデータベース接続を作成すると仮定すると、オブジェクトのいずれかを作成すると、新しいDB接続が作成されます。

は、これを回避するために、たとえば、あなたがあなたのデータベースへの1つのグローバル接続を作成し、それらのすべてが同じ接続を使用するように、あなたのクラスのコンストラクタにその接続を渡すことができますいくつかの方法があります。

+0

ありがとうございました。助けになる! :) –

2

これは、Mysqlクラスの記述方法によって異なります。シングルトンパターンを使用して記述すると、1つのデータベースインスタンスが維持されます。これをFactoryパターンとして記述し、それを使用する各オブジェクトに対して新しいインスタンスを生成させることができます。他にもたくさんのパターンと可能性がありますので、どのように動作させたいのか、カスタムMysqlクラスをどのように作成するのかによって異なります。

+0

すばやい返信をありがとう。 mysqlクラスは_constructにmysql_connectを使用していました。だからオブジェクトごとに1つのmysql接続を意味ですか?再度ありがとう:) –

+0

右。それを静的なクラス変数として保存しておいて、db接続がすでにインスタンス化されて返されているかどうかを確認するコードを追加した場合、その代わりにシングルトンパターンになり、db接続インスタンスは1つしかありませんでした。 –

1

これらのクラスは、同じMysqlオブジェクトを使用してDBに接続するか、2つの別々の接続を使用していますか?

我々は完全なコードが表示されるまで、私たちは、この質問に答えることはできません。

しかし、この場合の拡張は悪い考えです。 class A is a class Bと言うことができない場合は、継承よりも構図を優先してください。つまり、Catalog_Productsmysqlオブジェクトへの参照を持つ必要がありますが、に拡張しないでください。継承が正当化されるとき、あなたのアイデアを取得するには

class mysql extends databaseです。この場合、あなたは「MySQLはデータベースである」ので、ここでの延長は限りdatabaseクラスは、共通のロジックをカプセル化して合理的に見える、とmysqlクラスは、より詳細な仕様を表していると言うことができます。

+0

こんにちは、これは確かに私を助けるでしょう。助けてくれてありがとう。 :) –

関連する問題