0

Java EE では、Spring を使用してサービスをインスタンス化し、再利用します。これで、サービス、リポジトリ、および DAO を使用して、アプリケーションをサポートするために PHP で小さなフレームワークを作成しました。

しかし、毎回新しいオブジェクトをインスタンス化することなく、これらのオブジェクトをインスタンス化し、さらに重要なことに再利用するにはどうすればよいでしょうか?

シングルトンの使用を開始するのは魅力的ですが、コードはすぐに混乱してしまいます。

実際、私は一般的に PHP で適切な OO プラクティスとデザイン パターンを使用することに問題があります。これに関する良いリソースはありますか?

4

3 に答える 3

1

私は個人的に PHP で常にシングルトン アプローチを使用していますが、私の意見では、私のコードは混乱していません。他の多くのプロジェクト (Typo3 など) は、グローバル配列を使用してオブジェクトを格納します。配列項目は簡単に上書きされる可能性があるため、このアプローチは好きではありません。

しかし、名前空間を使用していて、プロジェクト ファイルを (Java のように) フォルダに並べる場合、Singleton アプローチは非常にクリーンです。また、getInstance()メソッドを使用すると、 を使用するよりもはるかに安全です$globalArray['myInstance']

于 2012-04-20T07:17:32.893 に答える
0

PHPでは、重要なframewokrでも使用されている遅延読み込み手法を使用します

phpでは、オブジェクトをインスタンス化するためにクラスが書き込まれるファイルを常に含める必要があるため、自動ロード戦略を構築する必要があります

Symfonyは名前空間を使用するので、例えば

\DB\Repository\Classes\Product

たとえば、

/DB/Repository/Classes/Product.php file

そしてあなたは直接作ります

$product = new Product()

このようなファイルや他の種類の操作を含めることを気にせずに。

于 2012-04-20T07:29:49.860 に答える
0

あなたが探しているのは、サービス コンテナー (IoC コンテナー) だと思います。アプリケーションで使用できる PHP 実装がいくつかあります。私がこれまで使ってきたのは、Symfony フレームワークが提供する Dependency Injection コンポーネントと呼ばれるものです。ドキュメントはここにあります。

Zend DI と呼ばれる、私が知っている PHP で利用可能な別の実装があります。バージョン 2.0 以降、別の大きな PHP フレームワークによって提供されていますが、これはまだベータ段階です。Zend DI コンポーネントの例は、ここにあります。

于 2012-04-20T19:53:59.250 に答える