Maple フレームワークでは、DIコンテナを採用しています。
DIコンテナはデザインパターンのひとつです。
Dependency Injection 依存性の注入 という概念を実現します。
コンポーネントの独立性を高めて、機能変更があった場合に、影響が及ぶ範囲を最小限の留める目的を持っています。
プログラム本体 と その動作を記述する設定ファイル に2つに分離して記述します。
プログラム本体に設定ファイルによりパラメータを与えることを「注入」と呼んでいます。

注入の概念: 図は Spring より
コンポーネンツのオブジェクトの生成を1回だけにしたときは、Singleton パターンを用います。
DIコンテナでも同じことができます。
Java の場合は、Singleton ではコンポーネンツの独立性が保てないケースがありますが。
DIコンテナではも問題ないようです。

Singleton と DIコンテナ: 図は DI コンテナの本当の使いどころ より
DIコンテナを採用したフレームワークは、Jave の Spring や Seaser2 が有名です。
PHP では Maple くらいですね。
最近は、Ruby on Rails に代表される「設定より規約」という流れが主流になっています。
PHP では、Zend、CakePHP、Symfony などがそうです。
フレームワークには、約束事(規約)はがそれなりにあるので、設定と規約の両方を覚えなくてはなりません。
個人的には、プログラムと設定ファイルを両方を書くのは、思考の中断が起きる気がして、あまり好きではないです。
それならば、設定ファイルは最小限の方が好きですね。
参考
ITpro:DIコンテナSpring Frameworkで理解するDIDI コンテナの本当の使いどころRuby on Rails: DIコンテナとの比較WikiPedia: 設定より規約