0

PHPで、次の3つのクラスがあるとします。

database.php
item.php
user.php

クラスitemとuserの両方include("database.php");に、データベースに接続してクエリを実行するためのステートメントがあります。

たとえば、ユーザー情報とアイテム情報を表示したいページがあります。私はタイプする必要があります

include("item.php");
include("user.php");

しかし、もちろん、データベースクラスを2回インクルードしているため、エラーが発生します。itemクラスとuserクラスで使用できることはわかってinclude_once("database.php");いますが、さまざまなスレッドでreadを読んだことがありますが、includeとrequireの_once-versionsは使用しない方がよいでしょう。

複数の場所にデータベースクラスを含める必要がある場合に、PHPコードで「_once」を使用しないようにするためのベストプラクティスは何ですか?

4

3 に答える 3

3

include最善の解決策は、メインコードで呼び出しをまったく行わないことだと思いました。代わりに、ファイルを自動ロードして、必要な場合にのみファイルが含まれるようにします。

spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.php';
});

これで、コードが次のようnew database();になり、databaseクラスがロードされない場合、この関数にはが含まれますclasses/database.php。将来クラスが再度使用される場合、クラスはすでにロードされているため、オートローダーは再度使用されません。

詳細については、ドキュメントを参照してspl_autoload_registerください。

于 2013-03-19T10:30:14.787 に答える
0

他のスクリプトが含まれているメインスクリプトにデータベースを含めることができますが、include_onceとの使用require_onceは正常であり、重大なパフォーマンスの問題はありません。

于 2013-03-19T10:28:23.137 に答える
-1

* _onceに対するあなたの基本的な恐怖についてはよくわかりませんが、...

include("database.php");
include("item.php");
include("user.php");

1つの方法は、必要に応じてそれを呼び出し、クラスからinclude行を削除することです。

于 2013-03-19T10:30:04.670 に答える