私はこれについてすでに多くのSOトピックを読みましたが、まだ適切な答えを見つけていません(または作成できていません)。
私は小さなMVCフレームワークに取り組んでおり、コントローラーから呼び出すことができるグローバルクラス/オブジェクトが必要です(モデルもそうかもしれません)。
私が取ることができるルートがいくつかあります:
- グローバル変数
- 静的クラス/レジストリ
- 依存性注入
インターネットは、DI が最適なルートであることに同意しているようです。私はその考えを理解したと思いますが、まだ快適ではありません. そこで、背景情報をいくつか紹介したいと思います。このプロジェクトに取り組んでいるのはおそらく私だけです。これは小さなプロジェクトであり、すべてのコントローラーがメインのコントローラーを拡張します (そのため、そこにクラスのようなライブラリを 1 つだけロードできます)。
具体的な例として、カテゴリの配列が必要です。そこで、その配列を CategoryController に入れることから始めました。しかし今、その配列をフロントビューと ProductController でも使用したいことに気付きました。明らかに、すべての CategoryController を ProductController にロードしたくはありません。この例は単純なので、その配列を何らかの構成または設定ファイルに入れることができるとも言えますが、それが例である理由です。私はおそらく、より多くの機能でそれを拡張します。
要約すると、PHP(特にMVCモデル内)では、クラス(主にコントローラー)にある種の共通クラスまたはその他の共有可能な機能へのアクセスをどのように与えることができますか.