Drupal
Drupalはもっぱら、オブジェクト指向プログラミング (OOP) ではなく、手続き型プログラミングが用いられる。DrupalはいくつかのOOPの特徴に近づけてはいるが、OOP自体の欠如は以下のことをもたらす。
基礎をなすプログラミング言語システムによって強化されたカプセル化がない。これはプライベート・データの使用を排除し、名前空間分離の存在しない実施をもたらす。名前空間の分離がないため、インストールされたモジュールやテーマでのあらゆる関数や変数が、その他のインストールされたモジュール、インストールされたテーマ、あるいはDrupalコアにおけるその他の関数や変数の名前と同じ場合、「死の白画面」(en:white screen of death)を含む重大なエラーを起こす可能性がある。
オブジェクトの継承が「弱い」ためコードの再利用があまり効率的ではなく、多態性はレンダリング層でのみ近づけられる。
バージョン8でコアのバッグエンドにオブジェクト指向の Symfony ライブラリが導入された。
Drupalの擁護論者は、PHPのOOP言語機能は直接実装されていない(PHPバージョン4.xとの互換性を保証するため)にもかかわらず、OOPとアスペクト指向プログラミング(AOP)の原則がDrupalの設計には存在すると反証する。これはDrupalコアの将来のバージョンに移行するのに役立つが、それはバージョン7を皮切りに、PHP5によって提供されるOOPを活用し始めるであろう。Drupal 7は以前のPHPリリースと後方互換ではなくなるであろう。