2011-10-19 8 views
0

私はこのウェブサイトで同様の質問をし、有用なリソースを見つけましたが、誰かがこれを手伝ってくれました...複数のPHPクラスを使用する最も良い方法は何ですか?

私は、PDOを使ってMySQLデータベースに接続しています。私はクラスを利用し、それらの基本的な理解を得たいと思っています。

まず、データベースへの接続を処理するdbクラスを持つことで、正しい方法で作業を進めていますか?

第2に、自分のユーザー、メッセージ、写真などのために別のクラスを(個別のファイルに)作成したいのですが、私の問題や疑問は - これらのクラスはどのようにして既に確立されているデータベース接続を共有し、

フィードバックと有用なコードをいただきありがとうございます。

おかげ

+0

私の友人のような人達は、データベースクラスが冗長だと思う人もいますが、mysql_queryをmysqli_queryなどに変更しなくても、すべての*私のファイルとすべての1つを変更します。 – animuson

+0

@animuson:あなたの友人は、自分のユーザー名に通貨について言及していないでしょうか? – Cyclone

答えて

1

あなたは、実際のロジックを処理し、あなたのメインのスクリプトファイルの一番上にデータベース接続を確立した場合、その後、あなたは他のクラスにincludeを使用することができます。スコープを指定して適切に参照する限り、同じ変数にアクセスでき、すべて同じ接続を共有します。 $dbを一番上に定義し、下の他のファイルを含めると、それらはすべて$dbにアクセスできるようになります。

+0

PDOのクラスにもポイントがありますか?インクルードファイル内のDBに接続して、各クラスが何らかの形でデータベースにクエリを行うことができますか? – tommyd456

+0

@ user1003632:決定したらもっと簡単に変更できるので何かの仕方が好きではない。 – Cyclone

+0

だから、グローバルとシングルトンを使用するのは間違いありません。 – tommyd456

1

dbクラスからdbオブジェクトを作成し、別のクラスの中でそのオブジェクトにアクセスしたい場合は、グローバルを参照することしかできません。

限りデシベルクラスを使用すると、ページ()オブジェクトを作成する前に、あなたが持っているだろう、同じページ(必ずしも同じファイルが、視聴者の観点から、同じページのロード)に含まれているよう
Class db { 
    ...some code creading your pdo... 
} 

$db = new db(); 

Class page { 
    function __construct(){ 
     global $db; //Tell this function to use the global version of $db 
     ... you can now use the db connection in this function... 
    } 
} 

$page = new page(); 

グローバルスコープ内の$ db。

+0

はい、私はUsersクラスとMessagesクラスを必要とするPHPファイルを持っていれば、どちらもデータベースへの接続を不必要にしません。 – tommyd456

+0

接続は、新しいdb()オブジェクトを作成するときに作成され、参照するたびに作成されるのではありません。新しいdb()を$ dbとして作成し、その後に新しいUser()と新しいMessage()を作成すると、user内の$ db変数と 'global $ db'を使用したメッセージにアクセスできます。これは既存の接続クラスへの参照であり、新しい接続を作成しません。 –

0

dbクラスを必要とする他のクラス/ファイルに追加するには、include_once("db_class");を使用してください。ここでは、クラスが含まれるときはいつでも別のデータベース接続を行います。単一のデータベース接続を使用しようとしている場合、永続的な接続について学ぶ必要があります。

関連する問題